| |||
Views: 88,501,824 |
Main | FAQ | Uploader | IRC chat | Radio | Memberlist | Active users | Latest posts | Calendar | Stats | Online users | Search | 04-29-24 05:30 PM |
|
Guest: Register | Login |
Main - Posts by Iceguy |
Iceguy |
| ||
Newcomer Level: 8 Posts: 1/8 EXP: 1661 Next: 526 Since: 07-25-09 Last post: 5388 days Last view: 5391 days |
0583E $0063E 1 byte Misc. Change from 10 to 80 to disable Spin Jump. |
Iceguy |
| ||
Newcomer Level: 8 Posts: 2/8 EXP: 1661 Next: 526 Since: 07-25-09 Last post: 5388 days Last view: 5391 days |
I know this tutorial was made back in 2007, but there's still quite a few bugs:
"PHA //Good form to preserve the accumulator LDA $7E0019 CMP #$00 //This is the compare instruction you just learned! BNE NoMakeBig //See how this tells the SNES processor to branch to the instruction following the label "NoMakebig"? LDA #$01 STA $7E0019 NoMakeBig: RTS" You preserved the accumulator, but you didn't pull it back, so you need to pull a PLA right before the NoMakeBig. "You CANNOT multiply or divide with the 65c816" ASL and LSR both work to multiply/divide an address by 2 each time you use it. "These two little guys can't do math at all... " You can do INX/INY/DEX/DEY and you have also showed that in your tutorial, but you can't use do INX $RAM or DEX $RAM (same with Y). They're good for loops though. |
Iceguy |
| ||
Newcomer Level: 8 Posts: 3/8 EXP: 1661 Next: 526 Since: 07-25-09 Last post: 5388 days Last view: 5391 days |
I found this quite interesting, so I decided to be a bit of research on the cape twirl timer. Looking up in all.log, I found this:
CODE_00D076: A9 12 LDA.B #$12 CODE_00D078: 8D A6 14 STA.W $14A6 This is the 'spin' timer for the cape. When Mario presses X or Y, the spin timer is always set to 12, so it never goes back to 00. To work around your problem, you need to set up some sort of timer before this code is executed so that the spin timer isn't 12 all the time. What I did was hijack this and the status bar routine. The status bar one increments a RAM Address ($0660) all the time when Mario is caped ($19 = 02). In the spin timer routine, I made a check whether one second had passed (using $0660 as the timer). If it didn't, it simply bypasses the spin timer and returns. Otherwise, the timer is set back to #$12 and I STZ $0660. If you're still interested, here's the code: !Freespace = $13C400 Header LoROM org $D076 JSL Routine NOP org $8DC4 JSL Routine2 NOP ;----------------- org !Freespace !CodeSize = Ending-Routine db "STAR" dw !CodeSize-$01 dw !CodeSize-$01^$FFFF Routine: ;---------------- LDA $0660 CMP #$3C BCC Fail LDA #$12 STA $14A6 STZ $0660 Fail: RTL Routine2: LDA #$02 STA $420B LDA $19 CMP #$02 ; If mario isnt caped.. BNE Fail ; return. INC $0660 RTL ;------ Ending: ;------ All you need to do is patch that with xkas. You can change some defines such as the RAM Address used and Mario's twirl timer. |
Iceguy |
| ||
Newcomer Level: 8 Posts: 4/8 EXP: 1661 Next: 526 Since: 07-25-09 Last post: 5388 days Last view: 5391 days |
Hey guys, I'm Iceguy and I'm a regular member from SMWC. I started hacking SMW about a year ago and consider myself to be decent at hacking although I am also interesting in programming and playing video games.
Anyway, even though I only recognise a few of you, it's nice to stay here at Acmlm's ^-^ |
Iceguy |
| ||
Newcomer Level: 8 Posts: 5/8 EXP: 1661 Next: 526 Since: 07-25-09 Last post: 5388 days Last view: 5391 days |
The title screen music is at x18D7 and uses any one of the overworld songs. I'm not sure about the P-switch, but you can edit the song it uses with a newer version of addmusic (such as Romi's or Carol's). |
Iceguy |
| ||
Newcomer Level: 8 Posts: 6/8 EXP: 1661 Next: 526 Since: 07-25-09 Last post: 5388 days Last view: 5391 days |
Whoops, that was a mistake on my part. I meant to say x18C7. This was taken from a backup of the SMW ROM Map so I'm pretty sure it's correct:
018C7 $00:96C7 1 byte Music Title screen music |
Iceguy |
| ||
Newcomer Level: 8 Posts: 7/8 EXP: 1661 Next: 526 Since: 07-25-09 Last post: 5388 days Last view: 5391 days |
I kind of disagree there, I would find that tutorial a bit difficult for someone who doesn't know any programming yet.
You could try my tutorial, I tried to explain as easy as I could. If you can't comprehend that, then there's really no other way you're going to learn assembly like that. |
Iceguy |
| ||
Newcomer Level: 8 Posts: 8/8 EXP: 1661 Next: 526 Since: 07-25-09 Last post: 5388 days Last view: 5391 days |
Oh, okay. Thanks.
Apparently, there are some HTML issues causing random stuff with my tutorial not to appear, so I've copied it over to another forum: here (there's part 1 and part 2) |
Main - Posts by Iceguy |
© 2005-2023 Acmlm, blackhole89, Xkeeper et al. |
MySQL - queries: 71, rows: 91/91, time: 0.321 seconds. |