Points of Required Attention™
Please chime in on a proposed restructuring of the ROM hacking sections.
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
Posted on 07-25-09 07:41 AM, in Real spinjump delete Link | Quote | ID: 111142

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
Posted on 07-25-09 07:57 AM, in 65816 ASM tutorial Link | Quote | ID: 111143

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
Posted on 07-25-09 11:25 AM, in Cape spin 'reload time'? Possible? Link | Quote | ID: 111151

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
Posted on 07-25-09 03:02 PM, in Introduce yourself here! Don't clog up General Chat... Link | Quote | ID: 111153

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
Posted on 07-27-09 06:27 AM, in SMW ROM Addresses Link | Quote | ID: 111298

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
Posted on 07-27-09 06:37 AM, in SMW ROM Addresses Link | Quote | ID: 111300

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
Posted on 07-28-09 07:03 AM, in About ASM Link | Quote | ID: 111462

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
Posted on 07-29-09 06:21 AM, in About ASM Link | Quote | ID: 111578

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

Acmlmboard 2.1+4δ (2023-01-15)
© 2005-2023 Acmlm, blackhole89, Xkeeper et al.

Page rendered in 0.327 seconds. (327KB of memory used)
MySQL - queries: 71, rows: 91/91, time: 0.321 seconds.