Register | Login | |||||
Main
| Memberlist
| Active users
| ACS
| Commons
| Calendar
| Online users Ranks | FAQ | Color Chart | Photo album | IRC Chat |
| |
1 user currently in Super Mario World hacking: |
Acmlm's Board - I2 Archive - Super Mario World hacking - Editing Sprites in ASM... | | | |
Add to favorites | "RSS" Feed | Next newer thread | Next older thread |
User | Post | ||
Cruel Justice XD Level: 55 Posts: 314/1384 EXP: 1253266 For next: 60923 Since: 03-20-04 From: Darkwoods Penetentiary Since last post: 11 hours Last activity: 7 hours |
| ||
I am tired of asking questions that always have the same answer, "Use ASM... blah blah blah..." I said what the hell... figured I should take a shot at it at least once. I've noticed many people using ASM. I understand that you change codes around, that's simple. Which codes do I change and how the blazes do I find them? I'm stumped and in need of some assistance. Also, how exactly are these codes executed? Automatically, through a program, or more code? (edited by The_Raven on 09-22-04 11:09 PM) |
|||
knuck Hinox Banned until 19-58-5815: trolling, flaming, spamming, being a general fucktard... Level: 62 Posts: 757/1818 EXP: 1894574 For next: 90112 Since: 03-15-04 Since last post: 14 hours Last activity: 9 hours |
| ||
Good, you said that you were going to learn ASM. Now go to ZD and download some asm tutorials instead of asking the same thing that everyone else do. |
|||
Kario In Possession of a Stolen Shovel Level: 65 Posts: 759/2082 EXP: 2321379 For next: 14249 Since: 03-15-04 From: Texas... Yeehaw! Since last post: 2 days Last activity: 17 hours |
| ||
Originally posted by knuck Ditto, but less mean sounding. |
|||
MathOnNapkins Math n' Hacks Level: 67 Posts: 539/2189 EXP: 2495887 For next: 96985 Since: 03-18-04 From: Base Tourian Since last post: 1 hour Last activity: 32 min. |
| ||
If you want to change sprite behavior, sometime's it's enormously complicated, and sometime's it's very simple. If you want to get a feel for the basics before jumping into ASM try toying around with a cheat finder in your favorite emu. Try to determine some basic variables for the sprite you're researching. | |||
cpubasic13 17 years old now. Time to buy some M rated games by myself! Level: 54 Posts: 578/1346 EXP: 1206934 For next: 26936 Since: 03-15-04 From: Blame my parents, Eddy Since last post: 2 days Last activity: 1 day |
| ||
Originally posted by MathOnNapkins Have to agree with you there. Sometimes making a sprite is simple, but then when you want it to do something specific and setting where the graphics go, it gets complicated. Unless you have the proper notes... I will just post the data that mikejk released on sprites (comes in handy). You may be confused at first but it is rather easy... just long... NOTE: REALLY LONG POST!!! 0x03F46C -> 7E1656 0x03F535 -> 7E1662 0x03F5FE -> 7E166E 0x03F6C7 -> 7E167A 0x03F790 -> 7E1686 0x03F859 -> 7E190F All of these tables are indexed by sprite number (starting with x00 for the shelless green koopa). Here's a few of my notes about some table values. I've still barely touched the surface of all this data. I have the RAM locations as the headers, cuz that's what I see in my trace logs. 7E1656 setting both bits 5 and 6 makes an enemy stompable setting bit 8 changes the cape/star kill style 7E166E setting bit 1 changes the gfx page bits 2-4 tell which palette (8-F) the sprite uses setting bit 5 disables fireball killing of the enemy setting bit 6 disables cape killing of the enemy 7E1686 if bit 8 is set the sprite passes through floor bit 7 is set if the enemy is sprite creating (which is created is in a different table) 7E1662 I've noticed that changing data here changes the area for sprite interaction. For example, you've probably seen in hacks where rexes have been changed into goombas, you can still get killed by an invisible rex head. Fixing this is as simple as changing rex's table value 0x03F5E0 (0x03F535 + AB) to x00. Keep in mind that not all sprites use the data loaded from these tables. Some get new data from their own tables found in sprite specific routines. For my demo, I just changed entry 12 to match entry 00 for all six tables. I then needed to make sprite 12 use the code for shelless koopas, so doing some tracing I found another very important table at ROM address 0x0087CC. This table holds the memory locations (2 bytes for each sprite) to go to for the handling of each sprite. Sprite 12 intially jumped to a RTS command (made sense since it's listed as a null sprite), changing it to use the shelless koopa's code finally gave me some results I could see. I had a sprite that acted like a koopa, but the graphics it used was off. 7E1602 holds the animation frame, but I needed to change the tiles that the frames used... more tracing, more tables. 0x009E7F is the begining of an offset table that is indexed by sprite number. 0x009D83 is the start of a gfx tile table that is indexed by a value in the offset table. For example the entry for a green shelless in the offset table is x09, so the gfx tiles for the shelless start at 0x9D8C (0x009D83 + x09). Again not all of the enemies are stored here. I started to document which were but lost interest. I'll include what I did find though: (0) 82 A0 - koopa Walk 1 82 A2 - koopa walk 2 84 A4 - koopa turning 8C - koopa shell 8A - koopa shell ani 1 8E - koopa shell ani 2 (9) C8 - shelless walk 1 CA - shelless walk 2 CA - shelless turn CE - unused? CC - shelless fliping shell 86 - struggling shelless 1 4E - struggling shelless 2 (10) E0 - blue shelless walk 1 E2 - blue shelless walk 2 E2 - blue shelless turning CE - unused? E4 - blue shelless kicking E0 - blue shelless struggling 1 E0 - blue shelless struggling 2 (17) para-goomba a3 - straight goomba 8x8 tile 1 a3 - straight goomba 8x8 tile 2 (mirrored) b3 - straight goomba 8x8 tile 3 b3 - straight goomba 8x8 tile 4 (mirrored) e9 - tilted left goomba 8x8 tile 1 (mirrored) e8 - tilted left goomba 8x8 tile 2 (mirrored) f9 - tilted left goomba 8x8 tile 3 (mirrored) f8 - tilted left goomba 8x8 tile 4 (mirrored) e8 - tilted right goomba 8x8 tile 1 e9 - tilted right goomba 8x8 tile 2 f8 - tilted right goomba 8x8 tile 3 f9 - tilted right goomba 8x8 tile 4 e2 - straight parachute e6 - tilted parachute (25) AA - goomba walk/struggling 1 A8 - goomba walk/struggling 2 A8 - goomba turning AA - unused?? (29) para-bomb A2 - straight A2 - straight B2 - straight B2 - straight C3 - tilted left C2 - tilted left D3 - tilted left D2 - tilted left C2 - tilted right C3 - tilted right D2 - tilted right D3 - tilted right e2 - straight parachute e6 - tilted parachute (37) CA - bob-omb walking 1 CC - bob-omb walking 2 CA - bob-omb turning (3A) AC piranha plant closed mouth CE classic/upside down stem frame 1 AE piranha plant open mouth CE classic/upside down stem frame 2 83 displays behind left of jumping piranha frame 1 ??? 83 displays behind right of jumping piranha frame 1 ??? C4 jumping stem 8x8 tile 1 frame 1 C4 jumping stem 8x8 tile 2 frame 1 83 displays behind left of jumping piranha frame 2 ??? 83 displays behind right of jumping piranha frame 2 ??? C5 jumping stem 8x8 tile 1 frame 2 C5 jumping stem 8x8 tile 2 frame 2 (46) 8A - football (47) A6 - bullet bill A4 - ??? A6 - ??? A8 - ??? (4B) 80 - spiny walking 1 82 - spiny walking 2 80 - spiny turning (4E) 84 - spiny egg 8x8 tile 1 frame 1 84 - spiny egg 8x8 tile 2 frame 1 84 - spiny egg 8x8 tile 3 frame 1 84 - spiny egg 8x8 tile 4 frame 1 94 - spiny egg 8x8 tile 1 frame 2 94 - spiny egg 8x8 tile 2 frame 2 94 - spiny egg 8x8 tile 3 frame 2 94 - spiny egg 8x8 tile 4 frame 2 For my demo, I gave sprite 12 the same offset as the SMW goomba, and that's precisely what appears. The more I look through the ROM, the more tables I see, so hopefully this will spark some interest in documenting them. Hope this helps somewhat... just be patient and experiment... mainly with sprite 12, since it is the first null sprite. |
Add to favorites | "RSS" Feed | Next newer thread | Next older thread |
Acmlm's Board - I2 Archive - Super Mario World hacking - Editing Sprites in ASM... | | | |