diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-04-01 13:50:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-01 13:50:56 -0700 |
commit | 824902b40b71852c51191ec1e1ec14941ecb5063 (patch) | |
tree | 7daf6510c000fda53ba46e727a62c4dd85efe013 | |
parent | 23a462511307ce7461d490a892926c60d0851a2e (diff) | |
parent | bbc5294685ffa4b93442f7e6aeb095900c35868c (diff) |
Merge pull request #9 from PikalaxALT/master
Function labels and data dism related to physics
-rwxr-xr-x | audio/engine_0f.asm | 39 | ||||
-rwxr-xr-x | home.asm | 210 | ||||
-rwxr-xr-x | home/text.asm | 5 | ||||
-rwxr-xr-x | hram.asm | 7 | ||||
-rwxr-xr-x | macros.asm | 6 | ||||
-rwxr-xr-x | main.asm | 416 | ||||
-rwxr-xr-x | wram.asm | 88 |
7 files changed, 337 insertions, 434 deletions
diff --git a/audio/engine_0f.asm b/audio/engine_0f.asm index 16b293a..d782bb0 100755 --- a/audio/engine_0f.asm +++ b/audio/engine_0f.asm @@ -4,8 +4,8 @@ Func_3c000: ; 0x3c000 push bc push af call Func_3cb1b - ld hl, wdd01 - ld de, wdeb0 - wdd01 + ld hl, wChannel1 + ld de, wdeb0 - wChannel1 .clearLoop xor a ld [hli], a @@ -21,7 +21,7 @@ Func_3c000: ; 0x3c000 ld [hli], a ld hl, rNR10 ld e, $4 -.asm_3c022 +.loop xor a ld [hli], a ld [hli], a @@ -32,7 +32,7 @@ Func_3c000: ; 0x3c000 ld a, $80 ld [hli], a dec e - jr nz, .asm_3c022 + jr nz, .loop ld a, $8 ld [wde9a], a ld a, $77 @@ -256,7 +256,7 @@ Func_3c180: ; 0x3c180 xor a ld [wde97], a ld [wde99], a - ld bc, wdd01 + ld bc, wChannel1 .asm_3c18f ld hl, $0002 add hl, bc @@ -306,16 +306,16 @@ Func_3c180: ; 0x3c180 ld a, [wde97] cp $4 jr nc, .asm_3c219 - ld hl, wddcb + ld hl, wChannel5 + 2 bit 0, [hl] jr nz, .asm_3c204 - ld hl, wddfd + ld hl, wChannel6 + 2 bit 0, [hl] jr nz, .asm_3c204 - ld hl, wde2f + ld hl, wChannel7 + 2 bit 0, [hl] jr nz, .asm_3c204 - ld hl, wde61 + ld hl, wChannel8 + 2 bit 0, [hl] jr z, .asm_3c20a .asm_3c204 @@ -1140,10 +1140,10 @@ Func_3c704: ; 0x3c704 cp $4 ret nz xor a - ld hl, wde21 + ld hl, wChannel6 + $26 ld [hli], a ld [hl], a - ld hl, wde85 + ld hl, wChannel8 + $26 ld [hli], a ld [hl], a ld a, [wdeac] @@ -1619,6 +1619,7 @@ Func_3c9da: ; 0x3c9da Func_3c9e9: ; 0x3c9e9 call Func_3ca10 + ; cast to s16 ld e, a cp $80 jr nc, .asm_3c9f5 @@ -1754,24 +1755,24 @@ Func_3ca95: ; 0x3ca95 ld a, [wde97] cp $4 jr nc, .asm_3cab7 - ld bc, wdd01 + ld bc, wChannel1 call Func_3cad1 - ld bc, wdd33 + ld bc, wChannel2 call Func_3cad1 - ld bc, wdd65 + ld bc, wChannel3 call Func_3cad1 - ld bc, wdd97 + ld bc, wChannel4 call Func_3cad1 jr .asm_3cacf .asm_3cab7 - ld bc, wddc9 + ld bc, wChannel5 call Func_3cad1 - ld bc, wddfb + ld bc, wChannel6 call Func_3cad1 - ld bc, wde2d + ld bc, wChannel7 call Func_3cad1 - ld bc, wde5f + ld bc, wChannel8 call Func_3cad1 .asm_3cacf pop bc @@ -92,7 +92,7 @@ Start: ; 0x150 ld [MBC5RomBankOn], a ; Enable RAM Banking Mode ld a, $0 ld [MBC5SRamBank], a ; Load RAM Bank $0 - ld sp, wdfff ; Initialize stack pointer to the end of WRAM Bank $1 + ld sp, wStack ; Initialize stack pointer to the end of WRAM Bank $1 ld hl, hPushOAM ld bc, $007e call ClearData ; Clear High RAM (HRAM) @@ -194,7 +194,7 @@ SoftReset: ld [MBC5RomBankOn], a ld a, $0 ld [MBC5SRamBank], a - ld sp, wdfff + ld sp, wStack call WriteDMACodeToHRAM call ClearOAMBuffer xor a @@ -222,7 +222,7 @@ SoftReset: ld a, $0 ld [wd849], a ld [wd84a], a - ld a, $f + ld a, BANK(Func_3c000) call SetSongBank ld a, [hSGBFlag] and a @@ -538,9 +538,9 @@ PlaySong: ; 0x490 ld [hLoadedROMBank], a ld [MBC5RomBank], a ld a, e - ld [wd7bf], a + ld [wStageSong], a ld a, [wCurrentSongBank] - ld [wd7c0], a + ld [wStageSongBank], a call PlaySong_BankF ; this function is replicated in multiple banks. pop af ld [hLoadedROMBank], a @@ -577,10 +577,10 @@ Func_4d8: ; 0x4d8 push bc push de push hl - ld a, [wddcb] - ld hl, wddfd + ld a, [wChannel5 + 2] + ld hl, wChannel6 + 2 or [hl] - ld hl, wde2f + ld hl, wChannel7 + 2 or [hl] and $1 call z, PlaySoundEffect @@ -717,7 +717,7 @@ Func_597: ; 0x597 inc de ld b, $8 .asm_5a0 - ld a, [wd80c] + ld a, [wBGP] call Func_5c2 dec b jr nz, .asm_5a0 @@ -727,9 +727,9 @@ Func_597: ; 0x597 inc de ld b, $4 .asm_5b2 - ld a, [wd80d] + ld a, [wOBP0] call Func_5c2 - ld a, [wd80e] + ld a, [wOBP1] call Func_5c2 dec b jr nz, .asm_5b2 @@ -1803,7 +1803,7 @@ Func_bbe: ; 0xbbe and a jp nz, Func_c19 ld hl, hBGP - ld de, wd80c + ld de, wBGP ld b, $3 .asm_bcc ld a, [de] @@ -1820,7 +1820,7 @@ Func_bbe: ; 0xbbe ld bc, $0002 call AdvanceFrames ld hl, hBGP - ld de, wd80c + ld de, wBGP ld b, $3 .asm_be9 ld a, [de] @@ -1834,7 +1834,7 @@ Func_bbe: ; 0xbbe ld bc, $0002 call AdvanceFrames ld hl, hBGP - ld de, wd80c + ld de, wBGP ld b, $3 .asm_c02 ld a, [de] @@ -4004,16 +4004,19 @@ Func_208c: ; 0x208c scf ret -Func_20ab: ; 0x20ab +MultiplyBbyCUnsigned: ; 0x20ab + ; u16 bc = (u8)b * (u8)c push af xor a - ld [$ffb6], a - jr .asm_20c6 + ld [hSignedMathSignBuffer], a + jr asm_20c6 +MultiplyBbyCSigned: + ; s16 bc = (s8)b * (s8)c push af ld a, b xor c - ld [$ffb6], a + ld [hSignedMathSignBuffer], a bit 7, b jr z, .asm_20be ld a, b @@ -4022,24 +4025,26 @@ Func_20ab: ; 0x20ab ld b, a .asm_20be bit 7, c - jr z, .asm_20c6 + jr z, asm_20c6 ld a, c cpl inc a ld c, a -.asm_20c6 +asm_20c6 + ; b*c == (b**2 + c**2 - (b - c)**2) / 2 push de push hl ld a, b cp c - jr nc, .asm_20ce + jr nc, .c_le_b ld b, c ld c, a -.asm_20ce - ld h, $3e +.c_le_b + ; hl = b**2 + c**2 + ld h, SquaresLow / $100 ld l, c ld e, [hl] - inc h + inc h ; SquaresHigh / $100 ld d, [hl] ld l, b ld a, [hl] @@ -4048,13 +4053,14 @@ Func_20ab: ; 0x20ab ld h, a add hl, de push af - ld d, $3e + ; hl -= (b - c) ** 2 + ld d, SquaresLow / $100 ld a, b sub c ld e, a ld a, [de] ld c, a - inc d + inc d ; SquaresHigh / $100 ld a, [de] ld b, a ld a, l @@ -4063,21 +4069,22 @@ Func_20ab: ; 0x20ab ld a, h sbc b ld h, a - jr nc, .asm_20f1 + jr nc, .no_carry pop af ccf - jr .asm_20f2 + jr .check_sign -.asm_20f1 +.no_carry pop af -.asm_20f2 +.check_sign + ; hl /= 2 rr h rr l ld b, h ld c, l - ld a, [$ffb6] + ld a, [hSignedMathSignBuffer] rlca - jr nc, .asm_2107 + jr nc, .done ld a, c cpl add $1 @@ -4086,20 +4093,22 @@ Func_20ab: ; 0x20ab cpl adc $0 ld b, a -.asm_2107 +.done pop hl pop de pop af ret -Func_210b: ; 0x210b +MultiplyBCByEAndRoundToMostSignificantShort: ; 0x210b +; bc = round(bc * e / 256) +; b^d = sign of output push af push hl ld a, b xor d - ld [$ffb7], a + ld [hSignedMathSignBuffer2], a bit 7, b - jr z, .asm_211f + jr z, .positive1 ld a, c cpl add $1 @@ -4108,10 +4117,10 @@ Func_210b: ; 0x210b cpl adc $0 ld b, a -.asm_211f +.positive1 push bc ld b, e - call Func_20ab + call MultiplyBbyCUnsigned ld l, c ld h, b ld bc, $0080 @@ -4120,11 +4129,11 @@ Func_210b: ; 0x210b ld h, $0 pop bc ld c, e - call Func_20ab + call MultiplyBbyCUnsigned add hl, bc - ld a, [$ffb7] + ld a, [hSignedMathSignBuffer2] rlca - jr nc, .asm_2142 + jr nc, .positive2 ld a, l cpl add $1 @@ -4133,33 +4142,35 @@ Func_210b: ; 0x210b cpl adc $0 ld h, a -.asm_2142 +.positive2 ld c, l ld b, h pop hl pop af ret -Func_2147: ; 0x2147 +Cosine: ; 0x2147 + ; cos(a) add $40 ; fall through -Func_2149: ; 0x2149 +Sine: ; 0x2149 + ; sin(a) push hl - ld [$ffb6], a + ld [hSignedMathSignBuffer], a and $7f cp $40 - jr c, .asm_2155 + jr c, .positive cpl - add $81 -.asm_2155 - ld hl, Data_26be + add $80+1 +.positive + ld hl, SineTable ld e, a ld d, $0 add hl, de ld e, [hl] pop hl ld d, $0 - ld a, [$ffb6] + ld a, [hSignedMathSignBuffer] sla a ret nc ld d, $ff @@ -4253,51 +4264,53 @@ AddVelocityToPosition: ; 0x21c3 ld [hl], a ret -Func_21e5: ; 0x21e5 +NegateAngleAndApplyCollisionForce: ; 0x21e5 cpl inc a ; fall through -Func_21e7: ; 0x21e7 +ApplyCollisionForce: ; 0x21e7 push hl + ; bc_ret = bc * cos(a) + de * sin(x) + ; de_ret = bc * cos(a) - de * sin(x) push bc push de - ld [$ff8c], a - call Func_2147 + ld [hSineOrCosineArgumentBuffer], a + call Cosine ld a, e - ld [$ff8d], a + ld [hCosineResultBuffer], a ld a, d - ld [$ff8e], a - call Func_210b + ld [hCosineResultBuffer + 1], a + call MultiplyBCByEAndRoundToMostSignificantShort ld l, c ld h, b pop bc push bc - ld a, [$ff8c] - call Func_2149 + ld a, [hSineOrCosineArgumentBuffer] + call Sine ld a, e - ld [$ff8f], a + ld [hSineResultBuffer], a ld a, d - ld [$ff90], a - call Func_210b + ld [hSineResultBuffer + 1], a + call MultiplyBCByEAndRoundToMostSignificantShort add hl, bc pop de pop bc push hl push de - ld a, [$ff8f] + ld a, [hSineResultBuffer] ld e, a - ld a, [$ff90] + ld a, [hSineResultBuffer + 1] cpl ld d, a - call Func_210b + call MultiplyBCByEAndRoundToMostSignificantShort ld l, c ld h, b pop bc - ld a, [$ff8d] + ld a, [hCosineResultBuffer] ld e, a - ld a, [$ff8e] + ld a, [hCosineResultBuffer + 1] ld d, a - call Func_210b + call MultiplyBCByEAndRoundToMostSignificantShort add hl, bc ld d, h ld e, l @@ -4305,7 +4318,7 @@ Func_21e7: ; 0x21e7 pop hl ret -Func_222b: ; 0x222b +ApplyTorque: ; 0x222b push hl ld hl, wd7f8 ld [hl], $ff @@ -4410,7 +4423,7 @@ SetBallVelocity: ; 0x22a7 pop hl ret -Func_22b5: ; 0x22b5 +CheckObjectCollision: ; 0x22b5 ld a, [wBallXPos + 1] sub $4 push af @@ -4439,9 +4452,9 @@ Func_22b5: ; 0x22b5 ld b, $0 add hl, bc ld a, l - ld [wd7f3], a + ld [wBallPositionPointerOffsetFromStageTopLeft], a ld a, h - ld [wd7f4], a + ld [wBallPositionPointerOffsetFromStageTopLeft + 1], a ld a, [wStageCollisionMapPointer] ld c, a ld a, [wStageCollisionMapPointer + 1] @@ -4622,19 +4635,19 @@ Func_22b5: ; 0x22b5 ret z ld a, [hLoadedROMBank] push af - ld a, Bank(Data_8817) + ld a, Bank(CollisionForceAngles) ld [hLoadedROMBank], a ld [MBC5RomBank], a push de ld e, d ld d, $0 - ld hl, Data_8817 + ld hl, CollisionForceAngles add hl, de ld a, [hl] - ld [wd7ea], a + ld [wCollisionForceAngle], a sla e rl d - ld hl, Data_8917 + ld hl, CollisionYDeltas add hl, de ld a, [wBallYPos] add [hl] @@ -4643,7 +4656,7 @@ Func_22b5: ; 0x22b5 ld a, [wBallYPos + 1] adc [hl] ld [wBallYPos + 1], a - ld hl, Data_8b17 + ld hl, CollisionXDeltas add hl, de ld a, [wBallXPos] add [hl] @@ -4672,7 +4685,7 @@ Func_22b5: ; 0x22b5 and $1e ld c, a ld b, $0 - ld hl, Data_250e + ld hl, SubTileBallPosDeltas add hl, bc ld a, [wSubTileBallXPos] add $4 @@ -4694,12 +4707,12 @@ Func_22b5: ; 0x22b5 add hl, bc ld a, [hl] ld [wCurCollisionAttribute], a - ld hl, Data_250a + ld hl, BallPositionPointerOffsetDeltas add hl, bc - ld a, [wd7f3] + ld a, [wBallPositionPointerOffsetFromStageTopLeft] add [hl] ld [wd7f6], a - ld a, [wd7f4] + ld a, [wBallPositionPointerOffsetFromStageTopLeft + 1] adc $0 ld [wd7f7], a ret @@ -4787,11 +4800,27 @@ Func_248a: ; 0x248a scf ret -Data_250a: - dr $250a, $250e - -Data_250e: - dr $250e, $252e +BallPositionPointerOffsetDeltas: + db $00, $20 + db $01, $21 + +SubTileBallPosDeltas: + db 4, 0 + db 4, 1 + db 3, 3 + db 1, 4 + db 0, 4 + db -1, 4 + db -3, 3 + db -4, 1 + db -4, 0 + db -4, -1 + db -3, -3 + db -1, -4 + db 0, -4 + db 1, -4 + db 3, -3 + db 4, -1 SubTileXPos_CollisionDataPointers: ; 0x252e dw SubTileXPos_CollisionData0 @@ -4947,8 +4976,11 @@ SubTileXPos_CollisionData7: ; 0x268e db $18, $10, $04 db $18, $08, $03 -Data_26be: - dr $26be, $2720 +SineTable: + dr $26be, $26ff + +Data_26ff: + dr $26ff, $2720 CheckGameObjectCollisions: ; 0x2720 ld a, $ff @@ -5595,7 +5627,7 @@ ApplyTiltForces: ; 0x36c1 ld l, a bit 7, h ret nz - ld a, [wd7ea] + ld a, [wCollisionForceAngle] ld c, a ld b, $0 sla c diff --git a/home/text.asm b/home/text.asm index 9549408..97de605 100755 --- a/home/text.asm +++ b/home/text.asm @@ -674,10 +674,7 @@ Func_3475: ; 0x3475 call HandleTilts ld a, [wCurrentStage] bit 0, a - ld [hFarCallTempA], a - ld a, Bank(HandleFlippers) - ld hl, HandleFlippers - call nz, BankSwitch + callba nz, HandleFlippers callba Func_84b7 call Func_33e3 call Func_926 @@ -36,6 +36,13 @@ hNumFramesSinceLastVBlank EQU $FFB2 hNumFramesDropped EQU $FFB3 hVBlankCount EQU $FFB4 +hSignedMathSignBuffer EQU $FFB6 +hSignedMathSignBuffer2 EQU $FFB7 + +hSineOrCosineArgumentBuffer EQU $FF8C +hCosineResultBuffer EQU $FF8D +hSineResultBuffer EQU $FF8F + hFlipperYCollisionAttribute EQU $FFBF ; Vertical collision attribute for when ball collides with a flipper. hFFC4 = $FFC4 @@ -60,9 +60,15 @@ bigdw: MACRO ; big-endian word callba: MACRO ld [hFarCallTempA], a + IF _NARG > 1 + ld a, BANK(\2) + ld hl, \2 + call \1, BankSwitch + ELSE ld a, BANK(\1) ld hl, \1 call BankSwitch + ENDC ENDM bigBCD6: MACRO @@ -37,9 +37,9 @@ Func_800a: ; 0x800a ld a, $45 ld [hLCDC], a ld a, $e4 - ld [wd80c], a - ld [wd80d], a - ld [wd80e], a + ld [wBGP], a + ld [wOBP0], a + ld [wOBP1], a xor a ld [hSCX], a ld [hSCY], a @@ -264,10 +264,10 @@ CheckForResetButtonCombo: ; 0x8167 ld a, $41 ld [hLCDC], a ld a, $e4 - ld [wd80c], a + ld [wBGP], a xor a - ld [wd80d], a - ld [wd80e], a + ld [wOBP0], a + ld [wOBP1], a ld [hSCX], a ld [hSCY], a ld a, [hGameBoyColorFlag] @@ -372,10 +372,10 @@ FadeInCopyrightScreen: ; 0x8228 ld a, $41 ld [hLCDC], a ld a, $e4 - ld [wd80c], a + ld [wBGP], a xor a - ld [wd80d], a - ld [wd80e], a + ld [wOBP0], a + ld [wOBP1], a ld [hSCX], a ld [hSCY], a ld a, [hGameBoyColorFlag] @@ -553,7 +553,7 @@ StartBallForStage: ; 0x83ba and a jr z, .asm_83c7 call Func_8444 - call Func_8461 + call RestartStageMusic ret .asm_83c7 @@ -576,7 +576,7 @@ StartBallForStage: ; 0x83ba ld [wd548], a ld [wd549], a ld a, $20 - ld [wd7ab], a + ld [wSCX], a ld a, [wCurrentStage] call CallInFollowingTable CallTable_8404: ; 0x8404 @@ -625,10 +625,10 @@ Func_8444: ; 0x8444 .asm_8460 ret -Func_8461: ; 0x8461 - ld a, [wd7c0] +RestartStageMusic: ; 0x8461 + ld a, [wStageSongBank] call SetSongBank - ld a, [wd7bf] + ld a, [wStageSong] ld e, a ld d, $0 call PlaySong @@ -1203,7 +1203,7 @@ DrawInGameMenu: ; 0x87ed call LoadVRAMData ret -Data_8817: ; 0x8817 +CollisionForceAngles: ; 0x8817 ; This data has something to do with collisions. db $C0 db $C5 @@ -1462,7 +1462,7 @@ Data_8817: ; 0x8817 db $2B db $B6 -Data_8917: ; 0x8917 +CollisionYDeltas: ; 0x8917 ; This has to do with y-collision data dw $0000 dw $FFE0 @@ -1721,7 +1721,7 @@ Data_8917: ; 0x8917 dw $FBA3 dw $003E -Data_8b17: ; 0x8b17 +CollisionXDeltas: ; 0x8b17 ; This data has to do with x-collision data dw $FF00 dw $FEFB @@ -2368,11 +2368,11 @@ FadeInTitlescreen: ; 0xc00e ld a, $43 ld [hLCDC], a ld a, $e4 - ld [wd80c], a + ld [wBGP], a ld a, $d2 - ld [wd80d], a + ld [wOBP0], a ld a, $e1 - ld [wd80e], a + ld [wOBP1], a xor a ld [hSCX], a ld [hSCY], a @@ -2836,10 +2836,10 @@ Func_c35a: ; 0xc35a ld a, $47 ld [hLCDC], a ld a, $e4 - ld [wd80c], a - ld [wd80d], a + ld [wBGP], a + ld [wOBP0], a ld a, $d2 - ld [wd80e], a + ld [wOBP1], a xor a ld [hSCX], a ld [hSCY], a @@ -4011,10 +4011,10 @@ Func_cb14: ; 0xcb14 ld a, $43 ld [hLCDC], a ld a, $e0 - ld [wd80c], a + ld [wBGP], a ld a, $e1 - ld [wd80d], a - ld [wd80e], a + ld [wOBP0], a + ld [wOBP1], a xor a ld [hSCX], a ld [hNextFrameHBlankSCX], a @@ -5672,10 +5672,10 @@ LoadFieldSelectScreen: ; 0xd6dd ld a, $43 ld [hLCDC], a ld a, $e4 - ld [wd80c], a + ld [wBGP], a ld a, $d2 - ld [wd80d], a - ld [wd80e], a + ld [wOBP0], a + ld [wOBP1], a xor a ld [hSCX], a ld [hSCY], a @@ -5882,13 +5882,13 @@ HandlePinballGame: ; 0xd853 ld a, [wScreenState] rst JumpTable ; calls JumpToFuncInTable PinballGameScreenFunctions: ; 0xd857 - dw Func_d861 - dw Func_d87f - dw Func_d909 - dw Func_da36 - dw Func_dab2 + dw GameScreenFunction_LoadGFX + dw GameScreenFunction_StartBall + dw GameScreenFunction_HandleBallPhysics + dw GameScreenFunction_HandleBallLoss + dw GameScreenFunction_EndBall -Func_d861: ; 0xd861 +GameScreenFunction_LoadGFX: ; 0xd861 xor a ld [wd908], a callba InitializeStage @@ -5900,16 +5900,16 @@ Func_d861: ; 0xd861 inc [hl] ret -Func_d87f: ; 0xd87f +GameScreenFunction_StartBall: ; 0xd87f ld a, $67 ld [hLCDC], a ld a, $e4 - ld [wd80c], a + ld [wBGP], a ld a, $e1 - ld [wd80d], a + ld [wOBP0], a ld a, $e4 - ld [wd80e], a - ld a, [wd7ab] + ld [wOBP1], a + ld a, [wSCX] ld [hSCX], a xor a ld [hSCY], a @@ -5946,7 +5946,7 @@ Func_d87f: ; 0xd87f inc [hl] ret -Func_d909: ; 0xd909 +GameScreenFunction_HandleBallPhysics: ; 0xd909 ; main loop for stage logic xor a ld [wFlipperCollision], a @@ -5958,18 +5958,15 @@ Func_d909: ; 0xd909 call HandleTilts ld a, [wCurrentStage] bit 0, a - ld [hFarCallTempA], a - ld a, Bank(HandleFlippers) - ld hl, HandleFlippers - call nz, BankSwitch ; only perform flipper routines on the lower-half of stages + callba nz, HandleFlippers ; only perform flipper routines on the lower-half of stages ld a, [wFlipperCollision] and a - ld a, [wd7ea] + ld a, [wCollisionForceAngle] push af - call Func_22b5 ; collision stuff + call CheckObjectCollision ; collision stuff pop af jr z, .noFlipperCollision - ld [wd7ea], a + ld [wCollisionForceAngle], a .noFlipperCollision call CheckGameObjectCollisions call Func_281c ; not collision-related @@ -5983,16 +5980,17 @@ Func_d909: ; 0xd909 .didntPressMenuKey ld a, [wd7e9] ; check for collision flag and a - jr z, .asm_d9a2 + jr z, .skip_collision call ApplyTiltForces - call LoadBallVelocity - ld a, [wd7ea] - call Func_21e7 - call Func_222b + call LoadBallVelocity ; bc = x velocity, de = y velocity + ld a, [wCollisionForceAngle] + call ApplyCollisionForce + call ApplyTorque ld a, [wFlipperCollision] and a - jr z, .asm_d993 - ld hl, wd7bc + jr z, .not_flippers_2 + ; de -= *wFlipperYForce + ld hl, wFlipperYForce ld a, [hli] ld h, [hl] ld l, a @@ -6002,7 +6000,8 @@ Func_d909: ; 0xd909 ld a, d sbc h ld d, a - ld hl, wd7ba + ; bc += *wFlipperXForce + ld hl, wFlipperXForce ld a, [hli] ld h, [hl] ld l, a @@ -6012,17 +6011,17 @@ Func_d909: ; 0xd909 ld a, b adc h ld b, a - jr .asm_d999 + jr .next -.asm_d993 +.not_flippers_2 ld a, [wd7f8] and a - jr nz, .asm_d9a2 -.asm_d999 - ld a, [wd7ea] - call Func_21e5 + jr nz, .skip_collision +.next + ld a, [wCollisionForceAngle] + call NegateAngleAndApplyCollisionForce call SetBallVelocity -.asm_d9a2 +.skip_collision call MoveBallPosition callba CheckStageTransition callba Func_84b7 @@ -6039,10 +6038,7 @@ Func_d909: ; 0xd909 .asm_d9e9 ld a, [wd57d] and a - ld [hFarCallTempA], a - ld a, Bank(Func_86a4) - ld hl, Func_86a4 - call nz, BankSwitch + callba nz, Func_86a4 ld a, [wd4ae] and a ret z @@ -6074,7 +6070,7 @@ SaveGame: ; 0xda05 ld [wScreenState], a ret -Func_da36: ; 0xda36 +GameScreenFunction_HandleBallLoss: ; 0xda36 xor a ld [hJoypadState], a ld [hNewlyPressedButtons], a @@ -6088,10 +6084,7 @@ Func_da36: ; 0xda36 call HandleTilts ld a, [wCurrentStage] bit 0, a - ld [hFarCallTempA], a - ld a, Bank(HandleFlippers) - ld hl, HandleFlippers - call nz, BankSwitch + callba nz, HandleFlippers callba Func_84b7 call Func_33e3 callba Func_85c7 @@ -6125,7 +6118,7 @@ Func_da36: ; 0xda36 inc [hl] ret -Func_dab2: ; 0xdab2 +GameScreenFunction_EndBall: ; 0xdab2 xor a ld [wd803], a ld a, [wGameOver] @@ -6948,8 +6941,8 @@ HandleFlippers: ; 0xe0fe xor a ld [wFlipperCollision], a ld [hFlipperYCollisionAttribute], a - ld [wd7ba], a - ld [wd7bb], a + ld [wFlipperXForce], a + ld [wFlipperXForce + 1], a call Func_e118 call CheckFlipperCollision ld a, [wFlipperCollision] @@ -7549,8 +7542,8 @@ HandleFlipperCollision: ; 0xe442 ld a, $1 ld [wd7e9], a xor a - ld [wd7f3], a - ld [wd7f4], a + ld [wBallPositionPointerOffsetFromStageTopLeft], a + ld [wBallPositionPointerOffsetFromStageTopLeft + 1], a ld [wCurCollisionAttribute], a ld [wd7f6], a ld [wd7f7], a @@ -7574,9 +7567,9 @@ HandleFlipperCollision: ; 0xe442 rl d ; multiplied de by 4 call Func_e379 ld a, b - ld [wd7bc], a + ld [wFlipperYForce], a ld a, l - ld [wd7bd], a + ld [wFlipperYForce + 1], a ld a, [wBallXPos + 1] cp $50 ; which flipper did the ball hit? ld a, [wFlipperXCollisionAttribute] @@ -7584,15 +7577,15 @@ HandleFlipperCollision: ; 0xe442 cpl ; invert the x collision attribute inc a .asm_e48b - ld [wd7ea], a + ld [wCollisionForceAngle], a ld a, $1 ld [wd7eb], a - ld a, [wd7bd] + ld a, [wFlipperYForce + 1] bit 7, a ret z xor a - ld [wd7bc], a - ld [wd7bd], a + ld [wFlipperYForce], a + ld [wFlipperYForce + 1], a ret Func_e4a1: ; 0xe4a1 @@ -8318,7 +8311,7 @@ BallMovingDownStageTransitions: ; 0xed4e db $FF ; STAGE_SEEL_BONUS Func_ed5e: ; 0xed5e - ld hl, wd7ab + ld hl, wSCX ld a, [wd7ac] and a jr nz, .modify_scx_and_scy @@ -8847,10 +8840,7 @@ SlotBonusMultiplier: ; 0xf0c1 call .DivideBy25 ld a, c cp b - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call nz, BankSwitch + callba nz, Func_30164 callba Func_16f95 ld a, [wd60c] callba Func_f154 ; no need for BankSwitch here... @@ -10739,10 +10729,7 @@ CapturePokemon: ; 0x1052d jr nc, .asm_105d1 ld c, $a call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 .asm_105d1 call SetPokemonOwnedFlag ld a, [wd624] @@ -11183,10 +11170,7 @@ Func_10871: ; 0x10871 callba Func_10184 ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(Func_102bc) - ld hl, Func_102bc - call nz, BankSwitch + callba nz, Func_102bc ret Func_108f5: ; 0x108f5 @@ -11295,10 +11279,7 @@ Func_1098c: ; 0x1098c call BankSwitch ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(Func_102bc) - ld hl, Func_102bc - call nz, BankSwitch + callba nz, Func_102bc ret Func_109fc: ; 0x109fc @@ -12011,10 +11992,7 @@ Func_10ebb: ; 0x10ebb callba Func_10184 ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(Func_102bc) - ld hl, Func_102bc - call nz, BankSwitch + callba nz, Func_102bc ret IndicatorStatesPointerTable_10f3b: ; 0x10f3b @@ -12150,10 +12128,7 @@ Func_11061: ; 0x11061 callba Func_10184 ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(Func_102bc) - ld hl, Func_102bc - call nz, BankSwitch + callba nz, Func_102bc ret IndicatorStatesPointerTable_110ed: ; 0x110ed @@ -13917,10 +13892,7 @@ Func_1414b: ; 0x1414b callba Func_10362 ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(Func_10301) - ld hl, Func_10301 - call nz, BankSwitch + callba nz, Func_10301 ld a, [wd5f3] and a ret z @@ -14004,10 +13976,7 @@ Func_14210: ; 0x14210 callba Func_10184 ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(Func_102bc) - ld hl, Func_102bc - call nz, BankSwitch + callba nz, Func_102bc ret Func_14234: ; 0x14234 @@ -14952,10 +14921,7 @@ Func_14920: ; 0x14920 jr nc, .asm_14937 ld c, $a call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 .asm_14937 ld a, $1 ld [wd55a], a @@ -14968,10 +14934,7 @@ Func_14947: ; 0x14947 jr nc, .asm_1495e ld c, $a call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 .asm_1495e xor a ld [wd55a], a @@ -15120,9 +15083,9 @@ Func_14dc9: ; 0x14dc9 ld [wd804], a ld hl, $0200 ld a, l - ld [wd7bc], a + ld [wFlipperYForce], a ld a, h - ld [wd7bd], a + ld [wFlipperYForce + 1], a ld a, $80 ld [wFlipperCollision], a lb de, $00, $0e @@ -16332,10 +16295,7 @@ Func_15e93: ; 0x15e93 ret nc ld c, $19 call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 ret .asm_15f35 @@ -16438,9 +16398,9 @@ Func_15fda: ; 0x15fda ld [wd804], a ld hl, $0200 ld a, l - ld [wd7bc], a + ld [wFlipperYForce], a ld a, h - ld [wd7bd], a + ld [wFlipperYForce + 1], a ld a, $80 ld [wFlipperCollision], a ld a, [wWhichBumperId] @@ -16449,9 +16409,9 @@ Func_15fda: ; 0x15fda ld b, $0 ld hl, Data_1600e add hl, bc - ld a, [wd7ea] + ld a, [wCollisionForceAngle] add [hl] - ld [wd7ea], a + ld [wCollisionForceAngle], a lb de, $00, $0b call PlaySoundEffect ret @@ -16933,10 +16893,7 @@ Func_164e3: ; 0x164e3 .asm_16506 ld hl, wCurrentStage bit 0, [hl] - ld [hFarCallTempA], a - ld a, Bank(Func_30256) - ld hl, Func_30256 - call nz, BankSwitch + callba nz, Func_30256 ld a, [wd604] and a ret nz @@ -17001,10 +16958,7 @@ Func_1652d: ; 0x1652d Func_1658f: ; 0x1658f ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(LoadGreyBillboardPaletteData) - ld hl, LoadGreyBillboardPaletteData - call nz, BankSwitch + callba nz, LoadGreyBillboardPaletteData .showNextMap ld a, [wInitialMapSelectionIndex] inc a @@ -17155,10 +17109,7 @@ Func_1669e: ; 0x1669e jr nc, .asm_166f0 ld c, $a call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 .asm_166f0 lb de, $16, $10 call PlaySoundEffect @@ -17495,10 +17446,7 @@ Func_16d9d: ; 016d9d jr nc, .asm_16e24 ld c, $19 call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 .asm_16e24 ld a, [wd60c] ld [wd614], a @@ -18595,7 +18543,7 @@ StartBallGengarBonusStage: ; 0x18157 ld a, $56 ld [wBallYPos + 1], a xor a - ld [wd7ab], a + ld [wSCX], a ld [wStageCollisionState], a ld [wd653], a xor a @@ -18703,7 +18651,7 @@ CheckSingleGastlyCollision: ; 0x1820d bit 7, a jr nz, .noCollision sla a - ld [wd7ea], a + ld [wCollisionForceAngle], a ld a, $1 ld [wd7e9], a scf @@ -18780,7 +18728,7 @@ CheckSingleHaunterCollision: ; 0x18298 bit 7, a jr nz, .noCollision sla a - ld [wd7ea], a + ld [wCollisionForceAngle], a ld a, $1 ld [wd7e9], a scf @@ -18843,7 +18791,7 @@ CheckGiantGengarCollision: ; 0x18308 bit 7, a jr nz, .noCollision sla a - ld [wd7ea], a + ld [wCollisionForceAngle], a ld a, $1 ld [wd7e9], a scf @@ -18984,9 +18932,9 @@ Func_18464: ; 0x18464 ld [wd804], a ld hl, $0100 ld a, l - ld [wd7bc], a + ld [wFlipperYForce], a ld a, h - ld [wd7bd], a + ld [wFlipperYForce + 1], a ld a, $80 ld [wFlipperCollision], a lb de, $00, $2c @@ -19203,9 +19151,9 @@ Func_1860b: ; 0x1860b ld [wd804], a ld hl, $0100 ld a, l - ld [wd7bc], a + ld [wFlipperYForce], a ld a, h - ld [wd7bd], a + ld [wFlipperYForce + 1], a ld a, $80 ld [wFlipperCollision], a lb de, $00, $2d @@ -19442,9 +19390,9 @@ Func_187b1: ; 0x187b1 ld [wd804], a ld hl, $0200 ld a, l - ld [wd7bc], a + ld [wFlipperYForce], a ld a, h - ld [wd7bd], a + ld [wFlipperYForce + 1], a ld a, $80 ld [wFlipperCollision], a ld a, [wGengarYPos] @@ -19773,9 +19721,9 @@ Func_18d34: ; 0x18d34 ld [wd804], a ld hl, $0100 ld a, l - ld [wd7bc], a + ld [wFlipperYForce], a ld a, h - ld [wd7bd], a + ld [wFlipperYForce + 1], a ld a, $80 ld [wFlipperCollision], a ld de, $002f @@ -20260,7 +20208,7 @@ StartBallMewtwoBonusStage: ; 0x192e3 ld a, $80 ld [wBallXVelocity], a xor a - ld [wd7ab], a + ld [wSCX], a ld [wStageCollisionState], a ld [wd6a9], a ld a, [wd4c9] @@ -21092,7 +21040,7 @@ StartBallDiglettBonusStage: ; 0x19a38 ld a, $40 ld [wBallXVelocity], a xor a - ld [wd7ab], a + ld [wSCX], a ld [wStageCollisionState], a ld [wd73a], a ld hl, wDiglettStates @@ -21313,9 +21261,9 @@ Func_19c52: ; 0x19c52 call PlaySoundEffect ld hl, $0100 ld a, l - ld [wd7bc], a + ld [wFlipperYForce], a ld a, h - ld [wd7bd], a + ld [wFlipperYForce + 1], a ld a, $80 ld [wFlipperCollision], a ld a, [wd73c] @@ -21626,9 +21574,9 @@ Func_1aad4: ; 0x1aad4 ld [wd804], a ld hl, $0200 ld a, l - ld [wd7bc], a + ld [wFlipperYForce], a ld a, h - ld [wd7bd], a + ld [wFlipperYForce + 1], a ld a, $80 ld [wFlipperCollision], a .asm_1ab2c @@ -21980,7 +21928,7 @@ StartBallAfterBonusStageBlueField: ; 0x1c129 ld [wBallXVelocity], a ld [wBallXVelocity + 1], a ld [wd496], a - ld [wd7ab], a + ld [wSCX], a ld [wd7be], a ld a, [wBallTypeBackup] ld [wBallType], a @@ -22218,10 +22166,7 @@ Func_1c305: ; 0x1c305 callba Func_10362 ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(Func_10301) - ld hl, Func_10301 - call nz, BankSwitch + callba nz, Func_10301 ld a, [wd5f3] and a ret z @@ -22305,10 +22250,7 @@ Func_1c3ca: ; 0x1c3ca callba Func_10184 ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(Func_102bc) - ld hl, Func_102bc - call nz, BankSwitch + callba nz, Func_102bc ret Func_1c3ee: ; 0x1c3ee @@ -22850,10 +22792,7 @@ Func_1c7d7: ; 0x1c7d7 Func_1c839: ; 0x1c839 ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(LoadGreyBillboardPaletteData) - ld hl, LoadGreyBillboardPaletteData - call nz, BankSwitch + callba nz, LoadGreyBillboardPaletteData .showNextMap ld a, [wInitialMapSelectionIndex] inc a @@ -23106,9 +23045,9 @@ Func_1ca29: ; 0x1ca29 ld [wd804], a ld hl, $0200 ld a, l - ld [wd7bc], a + ld [wFlipperYForce], a ld a, h - ld [wd7bd], a + ld [wFlipperYForce + 1], a ld a, $80 ld [wFlipperCollision], a lb de, $00, $0e @@ -23331,9 +23270,9 @@ Func_1ce94: ; 0x1ce94 ld [wd804], a ld hl, $0200 ld a, l - ld [wd7bc], a + ld [wFlipperYForce], a ld a, h - ld [wd7bd], a + ld [wFlipperYForce + 1], a ld a, $80 ld [wFlipperCollision], a ld a, [wWhichBumperId] @@ -23342,9 +23281,9 @@ Func_1ce94: ; 0x1ce94 ld b, $0 ld hl, Data_1cec8 add hl, bc - ld a, [wd7ea] + ld a, [wCollisionForceAngle] add [hl] - ld [wd7ea], a + ld [wCollisionForceAngle], a lb de, $00, $0b call PlaySoundEffect ret @@ -23572,10 +23511,7 @@ Func_1d133: ; 0x1d133 jr nc, .asm_1d185 ld c, $a call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 .asm_1d185 lb de, $16, $10 call PlaySoundEffect @@ -23721,10 +23657,7 @@ Func_1d216: ; 0x1d216 ret nc ld c, $19 call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 ret .asm_1d2b6 @@ -23832,10 +23765,7 @@ HandleEnteringCloyster: ; 0x1d32d ret nc ld c, $19 call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 ret .asm_1d3cb @@ -23952,10 +23882,7 @@ Func_1d438: ; 0x1d438 jr nc, .asm_1d4e9 ld c, $19 call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 .asm_1d4e9 ld a, [wd60c] ld [wd614], a @@ -24505,10 +24432,7 @@ Func_1ddc7: ; 0x1ddc7 jr nc, .asm_1dde4 ld c, $a call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 .asm_1dde4 xor a ld [wd55a], a @@ -24524,10 +24448,7 @@ Func_1ddf4: ; 0x1ddf4 jr nc, .asm_1de11 ld c, $a call Func_e55 - ld [hFarCallTempA], a - ld a, Bank(Func_30164) - ld hl, Func_30164 - call z, BankSwitch + callba z, Func_30164 .asm_1de11 ld a, $1 ld [wd55a], a @@ -25477,10 +25398,7 @@ Func_1e9c0: ; 0x1e9c0 .asm_1e9e3 ld hl, wCurrentStage bit 0, [hl] - ld [hFarCallTempA], a - ld a, Bank(Func_30256) - ld hl, Func_30256 - call nz, BankSwitch + callba nz, Func_30256 ld a, [wd604] and a ret nz @@ -26697,10 +26615,7 @@ Func_2006b: ; 0x2006b callba Func_10362 ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(Func_10301) - ld hl, Func_10301 - call nz, BankSwitch + callba nz, Func_10301 .asm_20098 ld a, $1 ld [wd5c6], a @@ -27000,10 +26915,7 @@ Func_2032c: ; 0x2032c callba Func_10362 ld a, [hGameBoyColorFlag] and a - ld [hFarCallTempA], a - ld a, Bank(Func_10301) - ld hl, Func_10301 - call nz, BankSwitch + callba nz, Func_10301 .asm_20333 ld a, $1 ld [wd5c6], a @@ -27317,10 +27229,7 @@ Func_205e0: ; 0x205e0 ld [wIndicatorStates + 10], a ld a, [wCurrentStage] bit 0, a - ld [hFarCallTempA], a - ld a, Bank(Func_14135) - ld hl, Func_14135 - call nz, BankSwitch + callba nz, Func_14135 ld bc, OneMillionPoints callba AddBigBCD6FromQueue call FillBottomMessageBufferWithBlackTile @@ -27743,10 +27652,7 @@ Func_20977: ; 0x20977 ld [wIndicatorStates + 10], a ld a, [wCurrentStage] bit 0, a - ld [hFarCallTempA], a - ld a, Bank(Func_14135) - ld hl, Func_14135 - call nz, BankSwitch + callba nz, Func_14135 ld a, [hGameBoyColorFlag] and a jr z, .asm_209bf @@ -27794,10 +27700,7 @@ Func_209eb: ; 0x209eb ld [wIndicatorStates + 10], a ld a, [wCurrentStage] bit 0, a - ld [hFarCallTempA], a - ld a, Bank(Func_14135) - ld hl, Func_14135 - call nz, BankSwitch + callba nz, Func_14135 ld a, $58 ld [wd556], a ld a, $2 @@ -27872,10 +27775,7 @@ asm_20a9f: ld [wIndicatorStates + 10], a ld a, [wCurrentStage] bit 0, a - ld [hFarCallTempA], a - ld a, Bank(Func_14135) - ld hl, Func_14135 - call nz, BankSwitch + callba nz, Func_14135 ld a, [hGameBoyColorFlag] and a jr z, .asm_20ada @@ -28058,10 +27958,7 @@ Func_20c08: ; 0x20c08 ld [wIndicatorStates + 3], a ld a, [wCurrentStage] bit 0, a - ld [hFarCallTempA], a - ld a, Bank(Func_1c2cb) - ld hl, Func_1c2cb - call nz, BankSwitch + callba nz, Func_1c2cb ld bc, OneMillionPoints callba AddBigBCD6FromQueue call FillBottomMessageBufferWithBlackTile @@ -28464,10 +28361,7 @@ Func_20f75: ; 0x20f75 ld [wIndicatorStates + 3], a ld a, [wCurrentStage] bit 0, a - ld [hFarCallTempA], a - ld a, Bank(Func_1c2cb) - ld hl, Func_1c2cb - call nz, BankSwitch + callba nz, Func_1c2cb ld a, [hGameBoyColorFlag] and a jr z, .asm_20fc3 @@ -28516,10 +28410,7 @@ Func_20fef: ; 0x20fef ld [wIndicatorStates + 3], a ld a, [wCurrentStage] bit 0, a - ld [hFarCallTempA], a - ld a, Bank(Func_1c2cb) - ld hl, Func_1c2cb - call nz, BankSwitch + callba nz, Func_1c2cb ld a, $58 ld [wd556], a ld a, $2 @@ -28614,10 +28505,7 @@ asm_210c7: ld [wIndicatorStates + 2], a ld a, [wCurrentStage] bit 0, a - ld [hFarCallTempA], a - ld a, Bank(Func_1c2cb) - ld hl, Func_1c2cb - call nz, BankSwitch + callba nz, Func_1c2cb ld a, [hGameBoyColorFlag] and a jr z, .asm_21102 @@ -28781,7 +28669,7 @@ StartBallMeowthBonusStage: ; 0x24059 ld a, $40 ld [wBallXVelocity], a xor a - ld [wd7ab], a + ld [wSCX], a ld [wStageCollisionState], a ld [wd6e6], a ld hl, wd6f3 @@ -28922,7 +28810,7 @@ CheckMeowthCollision: ; 0x24170 bit 7, a jr nz, .noCollision sla a - ld [wd7ea], a + ld [wCollisionForceAngle], a ld a, $1 ld [wd7e9], a ld a, [wd6ec] @@ -29070,7 +28958,7 @@ CheckJewelCollision: ; 0x24272 bit 7, a jr nz, .noCollision sla a - ld [wd7ea], a + ld [wCollisionForceAngle], a ld a, $1 ld [wd7e9], a scf @@ -31140,7 +31028,7 @@ StartBallSeelBonusStage: ; 0x25af1 ld a, $80 ld [wBallXVelocity], a xor a - ld [wd7ab], a + ld [wSCX], a ld [wStageCollisionState], a ld [wd766], a ld a, $0 @@ -31284,7 +31172,7 @@ CheckSeelHeadCollision: ; 0x25c12 bit 7, a jr nz, .noCollision sla a - ld [wd7ea], a + ld [wCollisionForceAngle], a ld a, $1 ld [wd7e9], a scf @@ -32284,11 +32172,11 @@ LoadPokedexScreen: ; 0x2800e ld a, $23 ld [hLCDC], a ld a, $e4 - ld [wd80c], a + ld [wBGP], a ld a, $93 - ld [wd80d], a + ld [wOBP0], a ld a, $e4 - ld [wd80e], a + ld [wOBP1], a xor a ld [hSCX], a ld a, $8 @@ -36601,7 +36489,7 @@ StartBallAfterBonusStageRedField: ; 0x30128 ld [wBallXVelocity], a ld [wBallXVelocity + 1], a ld [wd496], a - ld [wd7ab], a + ld [wSCX], a ld [wd7be], a ld a, [wBallTypeBackup] ld [wBallType], a @@ -1699,7 +1699,7 @@ wUpperTiltPushing:: ; 0xd7a9 wd7aa:: ; 0xd7aa ds $1 -wd7ab:: ; 0xd7ab +wSCX:: ; 0xd7ab ds $1 wd7ac:: ; 0xd7ac @@ -1744,25 +1744,19 @@ wFlipperXCollisionAttribute:: ; 0xd7b8 wFlipperCollision:: ; 0xd7b9 ds $1 -wd7ba:: ; 0xd7ba - ds $1 - -wd7bb:: ; 0xd7bb - ds $1 - -wd7bc:: ; 0xd7bc - ds $1 +wFlipperXForce:: ; 0xd7ba + dw -wd7bd:: ; 0xd7bd - ds $1 +wFlipperYForce:: ; 0xd7bc + dw wd7be:: ; 0xd7be ds $1 -wd7bf:: ; 0xd7bf +wStageSong:: ; 0xd7bf ds $1 -wd7c0:: ; 0xd7c0 +wStageSongBank:: ; 0xd7c0 ds $1 wd7c1:: ; 0xd7c1 @@ -1798,7 +1792,7 @@ wd7d9:: ; 0xd7d9 wd7e9:: ; 0xd7e9 ds $1 -wd7ea:: ; 0xd7ea +wCollisionForceAngle:: ; 0xd7ea ds $1 wd7eb:: ; 0xd7eb @@ -1819,11 +1813,8 @@ wStageCollisionMasksBank:: ; 0xd7f1 wd7f2:: ; 0xd7f2 ds $1 -wd7f3:: ; 0xd7f3 - ds $1 - -wd7f4:: ; 0xd7f4 - ds $1 +wBallPositionPointerOffsetFromStageTopLeft:: ; 0xd7f3 + dw wCurCollisionAttribute:: ; 0xd7f5 ds $1 @@ -1888,13 +1879,13 @@ wd809:: ; 0xd809 wd80a:: ; 0xd80a ds $2 -wd80c:: ; 0xd80c +wBGP:: ; 0xd80c ds $1 -wd80d:: ; 0xd80d +wOBP0:: ; 0xd80d ds $1 -wd80e:: ; 0xd80e +wOBP1:: ; 0xd80e ds $1 wd80f:: ; 0xd80f @@ -2443,50 +2434,33 @@ wdaa3:: ; 0xdaa3 wdcad:: ; 0xdcad ds $53 +SECTION "Audio RAM", WRAMX [$dd00], BANK [1] wdd00:: ; 0xdd00 ds $1 -wdd01:: ; 0xdd01 +wChannel1:: ; 0xdd01 ds $32 -wdd33:: ; 0xdd33 +wChannel2:: ; 0xdd33 ds $32 -wdd65:: ; 0xdd65 +wChannel3:: ; 0xdd65 ds $32 -wdd97:: ; 0xdd97 +wChannel4:: ; 0xdd97 ds $32 -wddc9:: ; 0xddc9 - ds $2 - -wddcb:: ; 0xddcb - ds $30 - -wddfb:: ; 0xddfb - ds $2 - -wddfd:: ; 0xddfd - ds $24 - -wde21:: ; 0xde21 - ds $c - -wde2d:: ; 0xde2d - ds $2 - -wde2f:: ; 0xde2f - ds $30 +wChannel5:: ; 0xddc9 + ds $32 -wde5f:: ; 0xde5f - ds $2 +wChannel6:: ; 0xddfb + ds $32 -wde61:: ; 0xde61 - ds $24 +wChannel7:: ; 0xde2d + ds $32 -wde85:: ; 0xde85 - ds $c +wChannel8:: ; 0xde5f + ds $32 wde91:: ; 0xde91 ds $1 @@ -2569,12 +2543,10 @@ wdead:: ; 0xdead wdeae:: ; 0xdeae ds $2 +wMusicRAMEnd:: ; deb0 wdeb0:: ; 0xdeb0 ds $50 -wStack:: ; 0xdf00 - ds $ff - -wdfff:: ; 0xdfff - ds $1 - +SECTION "Stack", WRAMX [$dfff], BANK [1] +wStack:: ; 0xdfff + ds -$ff |