Notings of Attention™
Acmlmboard 2 Released
Github/GIT | @acmlmboard
Chatting Places
Discord

Affiliates
Super Mario Bros. X | Kuribo64
Views: 8,954,756
Main | FAQ | IRC chat | Memberlist | Active users | Latest posts | Stats | Ranks | Online users | Search
03-29-24 01:26 PM
Guest: Register | Login

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

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
Retired Staff
NES Game Aficionado
Level: 73


Posts: 1222/1354
EXP: 3331187
Next: 154681

Since: 01-02-12

Last post: 1943 days
Last view: 1451 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
Normal User

Level: 127


Posts: 3803/4986
EXP: 23538587
Next: 187979

Since: 01-02-12

Last post: 1234 days
Last view: 1234 days
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.

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


Posts: 1230/1354
EXP: 3331187
Next: 154681

Since: 01-02-12

Last post: 1943 days
Last view: 1451 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
Retired Staff
NES Game Aficionado
Level: 73


Posts: 1237/1354
EXP: 3331187
Next: 154681

Since: 01-02-12

Last post: 1943 days
Last view: 1451 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.5 (10/04/2020)
© 2005-2024 Acmlm, Emuz, et al.

Page rendered in 0.039 seconds. (834KB of memory used)
MySQL - queries: 76, rows: 540/575, time: 0.032 seconds.