Banner
Views: 854,012,710
Time:
24 users online: Andreuiito, anonimzwx,  Anorakun, BennyWhatever, codfish1002,  Deeke, Dippy, Ersanio, Evernn, Exodustx0, Green Jerry, Hooded Edge, Kezcade, LMPuny,  Maxodex, Miku, Sonikku, ss_isbjorn,  Tahixham, Torchkas, Ultima, VLSkoot, yoshii, Zandro - Guests: 58 - Bots: 82 Users: 47,123 (2,488 active)
Latest: Loudly
Tip: When you're about to release your hack, make a patch first, patch it to a clean ROM, and then test that. This way, you are testing both the hack AND the patch.Not logged in.
Posts by Tarek701
Tarek701's Profile - Posts by Tarek701
Pages: « 1 2 3 417 18 »
Originally posted by WhiteYoshiEgg
Schon mal nicht schlecht, und vor dem üblichen Abbruch wegen Lustlosigkeit steht immerhin eine ganze Menge Text.

Was die Erklärung angeht... da würde ich an deiner Stelle einige Sachen anders machen. Ich hab den Text, besonders die letzte Hälfte, eher überflogen, aber trotzdem - vieles scheint zu schnell erklärt, und die Art, in der Dinge aufeinander aufbauen (oder eben nicht) ist auch nicht gerade optimal. Hätte ich glaube ich als Anfänger nicht verstanden.

Echte Fehler:

Quote
Denn man musste die ganze Zeit(von Hand) zu den einzelnen Adressen springen. Aber das wird mit ASM schneller gemacht.

Klingt so, als wäre Maschinencode (Befehle in Hex) was ganz anderes als ASM. ASM ist eine besser lesbare Schreibweise für Maschinencode, mehr nicht.

Quote
8-Bit, zwei Werte?: 2^2 [...] 16-Bit, 4 Werte?: 2^4

2³ ist acht, und das hat miteinander nichts zu tun. Eine Stelle im Hexadezimalsystem entspricht vier Binärstellen, das war's.

Quote
Das DB Register ist eine 8-Bit Zahl, die das High-Byte(In diesem Fall 7E) ersetzt, wenn es weggelassen wird.

Das Data Bank Register hat nicht standardmäßig den Wert $7E, da bin ich mir ziemlich sicher. $7E und $7F sind die Banks, die RAM enthalten, und die Adressen $0000 bis $1FFF in den Banks $00 bis $1F haben dieselben Werte wie die in Bank $7E. Ob man $001DFB, $0A1DFB oder $7E1DFB schreibt, ist egal - und die 16-Bit-Schreibweise $1DFB ist die Kurzform von $001DFB. Es ist nicht so, dass hier das DBR hinzugezählt wird, sondern es wird tatsächlich auf Adresse $001DBF zugegriffen, was aber denselben Wert hat wie $7E1DFB. Das schreibt die SNES so vor. Bei Adressen ab $2000 muss man die Bank explizit angeben, da der Mirror in den Banks $00 bis $1F nur bis zu $1FFF reicht.

Hoffe, das war verständlich, es ist Mitternacht. Angenehme Ruhe.


Beim ersten Zitat ging es mir eben darum, dass man von Hand zu den einzelnen Adressen springen musste und dessen Werte ändern musste. Anders als bei ASM kannst du Sprungbefehle nutzen, bei denen du sofort zu den Adressen springen kannst. Aber wie du bereits gesagt hast, letztendlich gibt es keinen Unterschied. Beides bleibt das gleiche. Nur ASM bringt eben Vorteile mit sich, die man, wenn man das ganze von Hand macht, nicht bekommt. (Wenn ich mich da auch irre, dann weiß ich auch nicht weiter.)


Beim zweiten Zitat habe ich wohl nicht aufgepasst(naja, war ja auch ziemlich spät) und deshalb habe ich dieses Bit Zeugs von den Adressing's weggeholt.

Drittes Zitat: Das weiß ich natürlich auch, deshalb habe ich ja auch geschrieben, in diesem Fall. Heißt aber nicht, dass es immer so ist. Natürlich habe ich auch hinzugefügt, dass es noch 7F Bank gibt. Und verdammt! Wie konnte ich das vergessen. Das war wirklich einer der wichtigsten Sachen und ich habs nicht hin geschrieben. (Damit meine ich das die Mirror in den Banks nur bis $1FFFF gehen dürfen, danach muss man sie explizit angeben, wie du sagtest) Das habe ich sofort hinzugefügt.

Und zu letzt könnte ich mir in den Hintern beißen, aber es wird wohl sein müssen, dass ich das komplette Ding überarbeiten muss. Nächstes mal schreibe ich nicht mehr um 11 Abends oder später irgendwelche Tutorials.

--------------------
Tarek701 is dead.
Originally posted by WhiteYoshiEgg
Ah, verstehe.

Ja, bei meiner dritten "Korrektur" hab ich selbst einen Fehler gemacht. $1DFB ist nicht immer dasselbe wie $001DFB, sondern es wird tatsächlich immer das DBR hinzugezählt. Das ist aber trotzdem selten $7E (wenn überhaupt), also greift man, wenn man $1DFB schreibt, so gut wie immer auf $001DFB - $3F1DFB zu, nicht auf $7E1DFB.


Schließlich sind ja Fehler da, um sie zu korrigieren, sonst gäbe es weder Mensch noch irgendwas. Alles hat Fehler, die korrigiert werden müssen.

Hängt es also von der Wahrscheinlichkeit ab wann das DBR mal mitarbeitet? (Also was $1DFB betrifft)

--------------------
Tarek701 is dead.
Originally posted by Noobish Noobsicle
I can't speak for the SNES dev tool, but if it's MP5 code you're looking for, I wrote a simple homebrew rom to read in MP5 data, you could take that code and work with it if you wanted.

Download here, compile with xkas.


Thank you. It wasn't exactly what I was searching for, but this could help.

--------------------
Tarek701 is dead.
Labels don't exist in SMW actually. It's actually a harder way, but xkas is making it easier for us.

So, does someone know how the branching commands work actually? I heard that branching jumps in bytes, but I don't get it. I know what a byte is, but for example:

BEQ Label1
LDA #$03
STA $19
LDA #$04
STA $0DBE
Label1:
;Stuff...

I expected now that BEQ would be BEQ $04, but I'm wrong. Could someone explain that to me?

--------------------
Tarek701 is dead.
Originally posted by Alcaro
Opcodes aren't always one byte each. A byte is too small for that; how do you put $0DBE in one byte?

The size of an opcode is usually half the number of digits in its argument, plus 1. (Sometimes they have different lengths, for example if you use decimal or binary, but there are none of those here.)

BEQ Label1 ; 2
LDA #$03 ; 2
STA $19 ; 2
LDA #$04 ; 2
STA $0DBE ; 3
Label1: ; 0
;Stuff... ; 0

2+2+2+3 equals 9, so that's how far it goes.

But you usually don't need to care.

That's correct. But I'm currently working on a project, which needs to know about stuff like this.

Anyways, thank you!

--------------------
Tarek701 is dead.
Hallo, ich war nicht so wirklich zufrieden mit diesen Tutorial (und andere auch nicht) und deshalb habe ich es nochmal komplett in einem Textdokument neu geschrieben. Es ist diesmal ausführlicher und hoffentlich auch besser als das alte das ich hier gepostet habe. Es ist noch nicht fertig, dennoch möchte ich gerne ein Feedback von euch bekommen, da ich mir sicher bin, dass mir der eine oder andere Fehler unterlaufen ist.

Die Textdatei findet ihr auf dem Hauptbeitrag.

--------------------
Tarek701 is dead.
Originally posted by RPG Hacker
ODT? Ist vielleicht nicht gerade das beste Format, da man das nur mit Open Office öffnen kann. Wie wär es stattdessen mit RTF?


Ok, habs in RTF Format gemacht. Es scheinen keine Formatierungen schiefgegangen zu sein, da hatte ich mal wieder Glück.

--------------------
Tarek701 is dead.
(restricted)
Hallo, ich musste gerade nochmal bei Dropbox hochladen, da seit 3 Tagen irgendwie die ASM Tutorial.rtf datei nicht mehr ging.

Sollte jetzt problemlos funktionieren.

--------------------
Tarek701 is dead.
Was Super Mario World written in 65c816 Assembly, or was a high programming language used, such like C?

I wanted to know that now for some weeks.

--------------------
Tarek701 is dead.
Hello, I wasn't here now for over a month and what the hell! A new forum about SM64 Hacking! I never expected that and thought this forum is way more active than the SM64 Hacking Forum in Jul.rustedlogic.net

The point of this thread is following:
Some people, which just started with SM64 Hacking wanted to directly begin with complicated stuff like MIPS ASM coding. When a rumor was around, that I were "the father of SM64 Hacking" (Which isn't true, the real father is VL-Tone) a lot of people asked me where they can learn ASM. About some people I didn't thought about any longer and gaved them some PDF's, but at others I watched their videos and just saw, they just started with SM64 Hacking! I then wrote to some guy I forgot about, that he should first start with basic stuff like knowing what a hex address is, etc. Then he should start with basic Hex editing. But people wanted so badly to do this stuff, like giving mario more speed, when he hits a ! Box. (Yes, that must be because of Skelux's video) All this is very complicated in ASM hacking and is even harder than learning 658C16 ASM, which SNES has used. Then I remembered, that Messiaen released on the Jul forums a pair of header files, which are including all main functions, which SM64 use. The functions inside of the headers are then getting linked inside of the mario64.x. The linker does link the (yet not functional) functions to the addresses where the actual functions are really stored! This allows C coding in SM64. When I posted a link on how to do it, people were confused. Because of this, I made a long video where I explain how to code stuff in C for Mario 64. It starts with explaining all tools we need and then we're downloading all that stuff we need. Later we're setting it up. At the end, I showed some example codes, I compiled and used in Nemu64.

Where can I watch the video?
http://www.youtube.com/watch?v=QhzJl9iNOf8

The Download links
TDM-GCC:

http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/Previous/1.1006.0/tdm-gcc-4.6.1.exe/download

(Short thing about this) - This is the MinGW compiler you will need. When starting, press "Create" and follow the steps. Also, disable the "check for updated files", since I never got any problems with this older version. Optional: You can try if newer versions also work, if they work without errors, then I correct this here. (But only for those, which had a successful compile in MSYS)

MSYS:
http://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.10/MSYS-1.0.10.exe/download?use_mirror=switch&modtime=1079444447&big_mirror=1

N64Toolchain:
http://gzrt.googlecode.com/files/n64tree-win32-v1.0.7z

SM64 Header files:
http://sites.google.com/site/cajetan64/home/coding-in-n64-with-c/HeaderFiles.rar?attredirects=0&d=1
(Credit for gbi.h goes to Silicon Graphics, explode.h to messiaen, animations.h to messiaen and levels.h also to messiaen.)

If you have problems with compiling, then post it here. And please use pictures or video tapes. I have a better view of this, when I actually see what's happening.

The stuff provided here are mostly taken out of messiaen's website:
https://sites.google.com/site/messiaen64/

Same goes to Jul. Without that great forum, I never would be able to write this tutorial, even if it has some mistakes at the end:
http://jul.rustedlogic.net/forum.php?id=41


--------------------
Tarek701 is dead.
Originally posted by cpuHacka101
I see you still haven't included a fixed makefile. I guess you can download my fixed Makefile, otherwise msys will try to read the compilers with no directory. Just make sure to change the project name to whatever your C file is called.


Oh, I forgot about that directories.
Thank you, I included it.

EDIT:
UPDATES:
- Included mips.h header file, allows a kind of inline MIPS ASM in C. (Not all opcodes included. I'm going to include them myself. Credit goes to messiaen)
- Included gbi.h header file, allows you to use GBI commands inside of your C file. Read the instructions inside of gbi.h to find out how to impletent it correctly. To see an example of using gbi, look at messiaen's test gbi.c file in folder tests. (Cpuhacka, important thingy here... I'm not safe about if this is in direct connection with Fast3D Vertices. If so, then please tell me. I'm not very familar, but as far as I know, Fast3D is being commanded by GBI. Is this right or wrong?)

-> Upcoming things:
Add more functions in explode.h (and to linker(mario64.x) of course). For example a little tiny function, which does the same like ExplodeObject(); but just without giving a coin. Also a function to blockDMA copies. (Function will be called: BlockDmaCopy(); )

Just a question, do you have some other documents, which explains the Fast3D display lists more detailled? Could be useful.

--------------------
Tarek701 is dead.
Originally posted by cpuHacka101
I only know how to manage compiled Fast3D scripts, such as 0x04 (Load verts up to 16), 0xBF (Draw triangle by multiple of 0A), 0xFD(Load texture tile), 0xF2(Texture clamping option), 0x03(88=Dark RGB for normals, 86=Light RGB), and some others... Although I think this may help... PM me if you want to know more about compiled F3D scripts.


Looks like the function manual of the officiall N64DevKit?
Well, I had it also, but lost it long ago. Thank you for giving me the page!

--------------------
Tarek701 is dead.
WOW! I'm surprised. This code is really useful. I might post some of mine too in the next days. (after I corrected my header files)

--------------------
Tarek701 is dead.
Originally posted by Warwiio
Wow! I can't believe shading can actually make a huge graphic change in the game!


Yes, it's really interessting.
You can also use this OBJ Importer in combination with the header file I provided in the Header Files tutorial for coding stuff in C: The gbi.h file allows you to use several functions to also do stuff like that. Remember: This needs a bit of knowledge how GBI commands, Fast3D stuff even works. This stuff is also recompiled, which means that the compiled GameShark code(which will turn out very long) have to be patched with a better GameShark patcher.

If some are familiar with C coding and did some SM64 Compiled GameShark codes, then could someone try an imported level with obj_importer.exe in combination of gbi.h?

Also, something interessting about lightning is also here on my site, where I uploaded the whole N64DevKit manual, which isn't on Icequake's site.
http://n64devkit.square7.ch/kantan/step3/1/1_7.htm

Skelux:
Did you used those functions here?
http://n64devkit.square7.ch/n64man/gsp/gSPSetGeometryMode.htm
and:
http://n64devkit.square7.ch/n64man/gsp/gSPClearGeometryMode.htm

Difference between both:
gSPSetGeometryMode does enable the geometry pipeline modes and gSPSetGeometryMode does disable the geometry pipeline modes.

Those both functions are somewhere(compiled, of course) in SM64. I don't know right now the correct addresses for it.. But my question is, did you used those both functions called up there, which does the same? If yes, then I'm really happy.

--------------------
Tarek701 is dead.
(restricted)
Originally posted by cpuHacka101
Tarek, those functions were already loaded in messiaen's obj importer, the thing was, messiaen didn't convert the normals and used full lighted shading. Therefore, the level was just dull. What skelux did was converted the normals included in the obj file to the signed bytes for normals in N64 vertex data (0 to 1=0 to 7F; -1 to 0=81 to FF). Then he also made the shading command load a darker RGB for shade.


Ok, that was what I wanted to know.
Thank you.

--------------------
Tarek701 is dead.
Another Update!
This time I updated nemucheat.exe
-> From now on you can directly copy the new "Cheats.ini" file and paste it to your Nemu64 folder.

I included the nemucheat.exe inside of the HeaderFiles.rar
Take the new nemucheat.exe and put it in n64tree-win32/root/bin

Replace the old with the new one. Voilá!

Also, replace the old makefile in your codes folder with the new one to ensure that your output is a .ini file.

--------------------
Tarek701 is dead.
(restricted)
Originally posted by messiaen
Why don't you use register names? Using register numbers makes your code unreadable, especially in situations where register conventions are used (calling functions, stack pointers, etc).


Finally someone who thinks like me. It's really confusing, when people use register numbers, because I can't really remember them. The names are way easier to know than the numbers. For example SP stands for Stack Pointer. It's way easier than remembering the register number 29.

Good to see you're back. I hope you can give me a feedback on the C tutorial I made for the SM64 Hacking Community.

--------------------
Tarek701 is dead.
Pages: « 1 2 3 417 18 »
Tarek701's Profile - Posts by Tarek701

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2020 - SMW Central
Legal Information - Privacy Policy - Link To Us


Menu

Follow Us On

  • YouTube
  • Twitch
  • Twitter

Affiliates

  • Super Mario Bros. X Community
  • ROMhacking.net
  • Mario Fan Games Galaxy