Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- org $098000
- ; r1 = camera x + offset (288 right or 48 left)
- ; r2 = camera y - 32
- ; r3 = camera y + offset (272 down or 32 up)
- ; r4 = camera x - 48
- cache ; $098000 |
- from r1 ; $098001 |
- asr ; $098002 |\
- asr ; $098003 | |
- asr ; $098004 | |
- to r1 ; $098005 | |
- asr ; $098006 | |
- from r2 ; $098007 | |
- asr ; $098008 | |
- asr ; $098009 | |
- asr ; $09800A | |
- to r2 ; $09800B | |
- asr ; $09800C | | divide camera positions by 16
- from r3 ; $09800D | |
- asr ; $09800E | |
- asr ; $09800F | |
- asr ; $098010 | |
- to r3 ; $098011 | |
- asr ; $098012 | |
- from r4 ; $098013 | |
- asr ; $098014 | |
- asr ; $098015 | |
- asr ; $098016 | |
- to r4 ; $098017 | |
- asr ; $098018 |/
- ibt r5,#$FFFF ; $098019 |
- iwt r6,#$01FF ; $09801B |
- ibt r7,#$0016 ; $09801E |
- ibt r13,#$0014 ; $098020 |
- ibt r8,#$0000 ; $098022 |
- iwt r9,#$28CA ; $098024 |
- iwt r10,#$27CE ; $098027 | #$27CE into r10 (first word is sprite ID)
- lm r0,($2602) ; $09802A |\ set the value in $702602 as the ROM data bank
- romb ; $09802E |/
- lm r14,($2600) ; $098030 | r14 = ROM address
- ; loop begins here
- CODE_098034:
- ldb (r9) ; $098034 |\
- dec r0 ; $098036 | |
- bmi CODE_098041 ; $098037 | |
- getb ; $098039 | | loop until <= 0
- with r14 ; $09803A | |
- add #3 ; $09803B | | in 7028CA table
- inc r8 ; $09803D | |
- bra CODE_098034 ; $09803E | |
- inc r9 ; $098040 |/
- CODE_098041:
- inc r14 ; $098041 |
- to r12 ; $098042 |
- getbh ; $098043 |
- from r12 ; $098045 |
- sub r5 ; $098046 | r12 - r5 -> r0
- beq CODE_098080 ; $098047 |
- inc r14 ; $098049 |
- from r12 ; $09804A |
- and r6 ; $09804B |\ sprite ID -> $7027CE
- stw (r10) ; $09804C |/
- to r11 ; $09804D |
- getb ; $09804E | r11 = passed in table,x
- inc r14 ; $09804F | inc r14
- from r12 ; $098050 |
- hib ; $098051 | load high byte of r12 to r0
- lsr ; $098052 | multiply r0 by 2
- move r12,r0 ; $098053 | move r0 into r12
- sub r3 ; $098055 | r0 - ((camera y + offset)/16) -> r0
- bne CODE_098060 ; $098056 |\
- from r11 ; $098058 |
- sub r4 ; $098059 |/ r11 - ((camera x - 48)/16) -> r0
- bmi CODE_09805F ; $09805A |\
- sub r7 ; $09805C |/ r0 - r7 -> r0
- bmi CODE_09806B ; $09805D |\
- CODE_09805F:
- from r11 ; $09805F |
- CODE_098060:
- sub r1 ; $098060 |/ r11 - ((camera x + offset)/16) -> r0
- bne CODE_09807C ; $098061 |\
- from r12 ; $098063 |
- sub r2 ; $098064 |/ r12 - ((camera y - 32)/16) -> r0
- bmi CODE_09807C ; $098065 |\
- sub r13 ; $098067 |/ r0 - r13 -> r0
- bpl CODE_09807C ; $098068 |\
- nop ; $09806A |/
- CODE_09806B:
- inc r10 ; $09806B |\
- inc r10 ; $09806C | | x tile position -> $7027D0,x
- from r11 ; $09806D | |
- stw (r10) ; $09806E |/
- inc r10 ; $09806F |\
- inc r10 ; $098070 | | y tile position -> $7027D2,x
- from r12 ; $098071 | |
- stw (r10) ; $098072 |/
- inc r10 ; $098073 |\
- inc r10 ; $098074 | | stage ID -> $7027D4,x
- from r8 ; $098075 | |
- stw (r10) ; $098076 |/
- inc r10 ; $098077 |\
- inc r10 ; $098078 | | $FF -> $7028CA + stage ID
- from r5 ; $098079 | | this marks stage ID as "spawned in"
- stb (r9) ; $09807A |/ so, don't spawn again
- CODE_09807C:
- inc r8 ; $09807C |
- bra CODE_098034 ; $09807D |\ loop back up
- inc r9 ; $09807F |/
- CODE_098080:
- from r5 ; $098080 |
- stw (r10) ; $098081 | $FFFF -> r10
- stop ; $098082 |
- nop ; $098083 |
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement