Attention!!™
SMB3 Hacking Forum Opened!
Information needed!
If you have any useful data on hacking SMB3, please post it in the this stickied thread in the new SMB3 Forum. We are also looking for someone to help run a SMB3 hacking Wiki.
Join the Kafuka Discord! (Click here)
Views: 5,577,157
Main | FAQ | IRC chat | Memberlist | Active users | Latest posts | Calendar | Stats | Ranks | Online users | Search
10-23-18 03:23 AM
Guest: Register | Login

0 users currently in Super Mario Bros. 3 Hacking | 1 guest

Main - Super Mario Bros. 3 Hacking - Communist Mario 3
Next newer thread | Next older thread

Pages: 1 2

KP
Posted on 06-22-15 03:26 AM Link | ID: 85819
Acmlmistrator
NES Game Aficionado
Level: 67


Posts: 1222/1353
EXP: 2481371
Next: 111501

Since: 01-02-12

Last post: 56 days
Last view: 3 days
Posted by Trelior
Looking good so far.

Any objections to me streaming it when it's finished and released?
None, whatsoever. I'll even let you stream it when it's done but BEFORE release. I love your Let's Play format!

Thanks Trel!



Trelior
Posted on 06-22-15 03:37 AM Link | ID: 85821
Global Moderator
Kafuka's resident sack of shit
Level: 111


Posts: 3803/4394
EXP: 14521146
Next: 347214

Since: 01-02-12
From: Brookville, PA

Last post: 82 days
Last view: 1 day



Posted by KP9000
Posted by Trelior
Looking good so far.

Any objections to me streaming it when it's finished and released?
None, whatsoever. I'll even let you stream it when it's done but BEFORE release. I love your Let's Play format!

Thanks Trel!
I figure it's my way of contributing to the hacking community, since I kinda trashed my hack from way back when. And I don't do much else around here nowadays >_><_<

You're welcome.

I'm glad someone enjoys my format.


Youtube | Twitch | Stream Archive




KP
Posted on 07-14-15 11:21 PM (rev. 3 of 07-15-15 02:26 AM by KP) Link | ID: 86430
Acmlmistrator
NES Game Aficionado
Level: 67


Posts: 1230/1353
EXP: 2481371
Next: 111501

Since: 01-02-12

Last post: 56 days
Last view: 3 days
So I was able to write new code to handle having a separate set of animated graphics pages for each world. Each world now has its own isolated set of graphics that animate. Each world map has a set of animated graphics (4 frames) and a set of non-animated graphics. I suppose I could also set it up so each world has its own non-animated page as well, but I think what I've done will suffice. I don't claim to be good at ASM; in fact, it's probably very clunky and can probably be done way easier and more efficient than I have here:
============================= World Animation Routine ======================================
$BC27:84 86 STY $0086 = #$00 :
$BC29:AE 27 07 LDX $0727 = #$00 : Get World Number
$BC2C:E0 03 CPX #$03 : Is it World 4?
$BC2E:D0 04 BNE $BC34 : Skip ahead if not.
$BC30:A0 00 LDY #$00 :
$BC32:10 3C BPL $BC70 : Skip to Graphics Page ID Code
$BC34:E0 07 CPX #$07 : Is it World 8?
$BC36:D0 0E BNE $BC46 : Skip ahead if not.
$BC38:AC 26 07 LDY $0726 = #$00 : Player 1 or 2?
$BC3B:B9 77 00 LDA $0077,Y @ $007A = #$00 :
$BC3E:C9 03 CMP #$03 :
$BC40:D0 04 BNE $BC46 :
$BC42:A0 00 LDY #$00 :
$BC44:F0 2A BEQ $BC70 :
$BC46:AC 99 05 LDY $0599 = #$03 : Frame Number for relative loading of proper GFX page
$BC49:CE 9A 05 DEC $059A = #$10 : Counts down timer for animation length
$BC4C:10 22 BPL $BC70 :
$BC4E:C8 INY :
$BC4F:98 TYA :
$BC50:E0 02 CPX #$02 :
$BC52:D0 09 BNE $BC5D :
$BC54:29 01 AND #$01 :
$BC56:AC BB 07 LDY $07BB = #$00 :
$BC59:F0 02 BEQ $BC5D :
$BC5B:09 02 ORA #$02 :
$BC5D:29 03 AND #$03 : Number of frames to cycle
$BC5F:8D 99 05 STA $0599 = #$03 :
$BC62:A8 TAY :
$BC63:8A TXA :
$BC64:0A ASL :
$BC65:0A ASL :
$BC66:0D 99 05 ORA $0599 = #$03 :
$BC69:AA TAX :
$BC6A:BD 01 BC LDA $BC01,X @ $BC01 = #$11 : Load relative Graphics page duration timer from table
$BC6D:8D 9A 05 STA $059A = #$10 : Store at $059A
=============================== NEW CODE ====================================================
$BC70:AE 27 07 LDX $0727 = #$00 : Check current world
$BC73:E0 00 CPX #$00 : World 1?
$BC75:D0 05 BNE $BC7C : If not, skip to next compare.
$BC77:B9 E0 BC LDA $BCE0,Y @ $BCE3 = #$PP : Load Relative Graphics ID from table (#$PP = Graphics Page ID)
$BC7A:10 46 BPL $BCC2 : Skip to frame set
$BC7C:E0 01 CPX #$01 : World 2?
$BC7E:D0 05 BNE $BC85 : If not, skip to next compare.
$BC80:B9 E4 BC LDA $BCE4,Y @ $BCE7 = #$PP : Load Relative Graphics ID from table
$BC83:10 3D BPL $BCC2 : Skip to frame set
$BC85:E0 02 CPX #$02 : World 3?
$BC87:D0 05 BNE $BC8E : If not, skip to next compare.
$BC89:B9 E8 BC LDA $BCE8,Y @ $BCEB = #$PP : Load Relative Graphics ID from table
$BC8C:10 34 BPL $BCC2 : Skip to frame set
$BC8E:E0 03 CPX #$03 : World 4?
$BC90:D0 05 BNE $BC97 : If not, skip to next compare.
$BC92:B9 EC BC LDA $BCEC,Y @ $BCEF = #$PP : Load Relative Graphics ID from table
$BC95:10 2B BPL $BCC2 : Skip to frame set
$BC97:E0 04 CPX #$04 : World 5?
$BC99:D0 05 BNE $BCA0 : If not, skip to next compare.
$BC9B:B9 F0 BC LDA $BCF0,Y @ $BCF3 = #$PP : Load Relative Graphics ID from table
$BC9E:10 22 BPL $BCC2 : Skip to frame set
$BCA0:E0 05 CPX #$05 : World 6?
$BCA2:D0 05 BNE $BCA9 : If not, skip to next compare.
$BCA4:B9 F4 BC LDA $BCF4,Y @ $BCF7 = #$PP : Load Relative Graphics ID from table
$BCA7:10 19 BPL $BCC2 : Skip to frame set
$BCA9:E0 06 CPX #$06 : World 7?
$BCAB:D0 05 BNE $BCB2 : If not, skip to next compare.
$BCAD:B9 F8 BC LDA $BCF8,Y @ $BCFB = #$PP : Load Relative Graphics ID from table
$BCB0:10 10 BPL $BCC2 : Skip to frame set
$BCB2:E0 07 CPX #$07 : World 8?
$BCB4:D0 05 BNE $BCBB : If not, skip to next compare. (Needs to skip to the next relative LDA)
$BCB6:B9 FC BC LDA $BCFC,Y @ $BCFF = #$PP : Load Relative Graphics ID from table
$BCB9:10 07 BPL $BCC2 : Skip to frame set
$BCBB:E0 08 CPX #$08 : World 9? (This instruction is redundant, needs to be removed)
$BCBD:D0 03 BNE $BCC2 : If not, skip to next compare. (This instruction is redundant, needs to be removed)
$BCBF:B9 00 BD LDA $BD00,Y @ $BD03 = #$PP : Load Relative Graphics ID from table
$BCC2:8D 19 07 STA $0719 = #$PP : Set loaded graphics ID as next frame
=============================== End NEW CODE ================================================
$BCC5:60 RTS :


But in any event, it works. This will give me quite a bit more room to play with when redesigning these worlds. I could have given the non-animated page of the world maps the same treatment, but I think I'll hold off for now since I can do what I want with this code only.

This new feature presents a small issue though-- none of the editors support the new code. They'll just look at the old places for where they expect the graphics to be. Which means every time I want to see what I'm doing in these editors, I have to take the graphics from the new location and paste them into the old location, and then back to the new location again to see it in-game. Not a HUGE deal, but, again, it'll work.



KP
Posted on 07-24-15 04:42 PM Link | ID: 86663
Acmlmistrator
NES Game Aficionado
Level: 67


Posts: 1237/1353
EXP: 2481371
Next: 111501

Since: 01-02-12

Last post: 56 days
Last view: 3 days
I've updated the first post with the 7/14 update. I'm going to refine the code that I've made in my previous post, thanks to some help from Disch in #rom-hacking on EsperNet. I'm actually starting to understand this shit. :D

Further plans include to fix more bugs, wipe worlds 6-8 clean so as not to get distracted by their layouts while still being able to complete them. That way I can continue on with world 6 without its old-style layout influencing my design. I think that World 6 will still be an ice world, since most of its levels have the slippery mechanic and it seems to fit best with the Russia theme.

I also need to fix the issues with World 8. It's currently not completable due to sloppy efforts to wipe the map clean.

Man, making new graphics is... hard.


Pages: 1 2


Next newer thread | Next older thread
Main - Super Mario Bros. 3 Hacking - Communist Mario 3


Acmlmboard v2.5.4 (10/13/2018)
© 2005-2018 Acmlm, Emuz, et al.

Page rendered in 0.064 seconds. (640KB of memory used)
MySQL - queries: 73, rows: 512/547, time: 0.037 seconds.