diff options
-rwxr-xr-x | home.asm | 182 | ||||
-rwxr-xr-x | home/text.asm | 5 | ||||
-rwxr-xr-x | hram.asm | 7 | ||||
-rwxr-xr-x | macros.asm | 6 | ||||
-rwxr-xr-x | main.asm | 314 | ||||
-rwxr-xr-x | wram.asm | 23 |
6 files changed, 229 insertions, 308 deletions
@@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -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 @@ -1744,17 +1744,11 @@ wFlipperXCollisionAttribute:: ; 0xd7b8 wFlipperCollision:: ; 0xd7b9 ds $1 -wd7ba:: ; 0xd7ba - ds $1 +wFlipperXForce:: ; 0xd7ba + dw -wd7bb:: ; 0xd7bb - ds $1 - -wd7bc:: ; 0xd7bc - ds $1 - -wd7bd:: ; 0xd7bd - ds $1 +wFlipperYForce:: ; 0xd7bc + dw wd7be:: ; 0xd7be ds $1 @@ -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 |