diff options
Diffstat (limited to 'main.asm')
-rwxr-xr-x | main.asm | 928 |
1 files changed, 7 insertions, 921 deletions
@@ -1385,7 +1385,7 @@ Data_13685: ; 0x13685 SECTION "bank5", ROMX, BANK[$5] INCLUDE "engine/pinball_game/load_stage_data/load_red_field.asm" -INCLUDE "engine/collision/red_stage_game_object_collision.asm" +INCLUDE "engine/pinball_game/object_collision/red_stage_object_collision.asm" Func_1460e: ; 0x1460e call ResolveVoltorbCollision @@ -10142,257 +10142,7 @@ INCLUDE "engine/pinball_game/draw_sprites/draw_unused_stage_sprites.asm" INCLUDE "engine/pinball_game/stage_init/init_gengar_bonus.asm" INCLUDE "engine/pinball_game/ball_init/ball_init_gengar_bonus.asm" INCLUDE "engine/pinball_game/load_stage_data/load_gengar_bonus.asm" - -CheckGengarBonusStageGameObjectCollisions: ; 0x181b1 - call CheckGengarBonusStageGastlyCollision - call CheckGengarBonusStageHaunterCollision - call CheckGengarBonusStageGengarCollision - call GengarBonusStageGravestonesCollision - ret - -CheckGengarBonusStageGastlyCollision: ; 0x181be - ld a, [wd659] - and a - ret z - ld a, [wGastly1XPos + 1] - ld b, a - ld a, [wGastly1YPos + 1] - add $10 - ld c, a - ld a, [wGastly1AnimationState] - call CheckSingleGastlyCollision - ld a, $1 - jr c, .hitGastly - ld a, [wGastly2XPos + 1] - ld b, a - ld a, [wGastly2YPos + 1] - add $10 - ld c, a - ld a, [wGastly2AnimationState] - call CheckSingleGastlyCollision - ld a, $2 - jr c, .hitGastly - ld a, [wGastly3XPos + 1] - ld b, a - ld a, [wGastly3YPos + 1] - add $10 - ld c, a - ld a, [wGastly3AnimationState] - call CheckSingleGastlyCollision - ld a, $3 - ret nc -.hitGastly - ld [wTriggeredGameObjectIndex], a - ld [wd657], a - add $4 - ld [wTriggeredGameObject], a - ld [wd658], a - ret - -CheckSingleGastlyCollision: ; 0x1820d - cp $4 - jr z, .noCollision - ld a, [wBallXPos + 1] - sub b - cp $20 - jr nc, .noCollision - ld b, a - ld a, [wBallYPos + 1] - sub c - cp $20 - jr nc, .noCollision - ld c, a - ld e, c - ld d, $0 - sla e - rl d - sla e - rl d - sla e - rl d - sla e - rl d - sla e - rl d - ld l, b - ld h, $0 - add hl, de - ld de, CircularCollisionAngles - add hl, de - ld a, BANK(CircularCollisionAngles) - call ReadByteFromBank - bit 7, a - jr nz, .noCollision - sla a - ld [wCollisionForceAngle], a - ld a, $1 - ld [wd7e9], a - scf - ret - -.noCollision - and a - ret - -CheckGengarBonusStageHaunterCollision: ; 0x18259 - ld a, [wd67e] - and a - ret z - ld a, [wHaunter1XPos + 1] - add $fe - ld b, a - ld a, [wHaunter1YPos + 1] - add $c - ld c, a - ld a, [wHaunter1AnimationState] - call CheckSingleHaunterCollision - ld a, $1 - jr c, .hitHaunter - ld a, [wHaunter2XPos + 1] - add $fe - ld b, a - ld a, [wHaunter2YPos + 1] - add $c - ld c, a - ld a, [wHaunter2AnimationState] - call CheckSingleHaunterCollision - ld a, $2 - ret nc -.hitHaunter - ld [wTriggeredGameObjectIndex], a - ld [wd67c], a - add $7 - ld [wTriggeredGameObject], a - ld [wd67d], a - ret - -CheckSingleHaunterCollision: ; 0x18298 - cp $5 - jr z, .noCollision - ld a, [wBallXPos + 1] - sub b - cp $20 - jr nc, .noCollision - ld b, a - ld a, [wBallYPos + 1] - sub c - cp $28 - jr nc, .noCollision - ld c, a - ld e, c - ld d, $0 - sla e - rl d - sla e - rl d - sla e - rl d - sla e - rl d - sla e - rl d - ld l, b - ld h, $0 - add hl, de - ld de, HaunterCollisionAngles - add hl, de - ld a, BANK(HaunterCollisionAngles) - call ReadByteFromBank - bit 7, a - jr nz, .noCollision - sla a - ld [wCollisionForceAngle], a - ld a, $1 - ld [wd7e9], a - scf - ret - -.noCollision - and a - ret - -CheckGengarBonusStageGengarCollision: ; 0x182e4 - ld a, [wd698] - and a - ret z - ld a, [wGengarXPos + 1] - ld b, a - ld a, [wGengarYPos + 1] - add $c - ld c, a - call CheckGiantGengarCollision - ld a, $1 - ret nc - ld [wTriggeredGameObjectIndex], a - ld [wd696], a - add $9 - ld [wTriggeredGameObject], a - ld [wd697], a - ret - -CheckGiantGengarCollision: ; 0x18308 - ld a, [wBallXPos + 1] - sub b - cp $30 - jr nc, .noCollision - ld b, a - ld a, [wBallYPos + 1] - sub c - cp $40 - jr nc, .noCollision - ld c, a - ld a, c - sla a - add c - ld e, a - ld d, $0 - sla e - rl d - sla e - rl d - sla e - rl d - sla e - rl d - ld l, b - ld h, $0 - add hl, de - ld de, GengarCollisionAngles - add hl, de - ld a, BANK(GengarCollisionAngles) - call ReadByteFromBank - bit 7, a - jr nz, .noCollision - sla a - ld [wCollisionForceAngle], a - ld a, $1 - ld [wd7e9], a - scf - ret - -.noCollision - and a - ret - -GengarBonusStageGravestonesCollision: ; 0x18350 - ld de, GengarBonusStageGravestonesCollisionData - ld hl, GengarBonusStageGravestonesCollisionAttributes - ld bc, wWhichGravestone - and a - jp HandleGameObjectCollision - -GengarBonusStageGravestonesCollisionAttributes: - db $00 ; flat list - db $19, $1A, $1B, $1C, $27, $1D, $1E, $1F, $20 - db $FF ; terminator - -GengarBonusStageGravestonesCollisionData: - db $11, $11 - db $01, $24, $52 - db $02, $44, $3A - db $03, $74, $5A - db $04, $7C, $32 - db $FF ; terminator +INCLUDE "engine/pinball_game/object_collision/gengar_bonus_object_collision.asm" Func_18377: ; 0x18377 call Func_18464 @@ -12282,196 +12032,7 @@ INCLUDE "engine/pinball_game/draw_sprites/draw_gengar_bonus_sprites.asm" INCLUDE "engine/pinball_game/stage_init/init_mewtwo_bonus.asm" INCLUDE "engine/pinball_game/ball_init/ball_init_mewtwo_bonus.asm" INCLUDE "engine/pinball_game/load_stage_data/load_mewtwo_bonus.asm" - -CheckMewtwoBonusStageGameObjectCollisions: ; 0x19330 - call Func_19414 - call Func_19337 - ret - -Func_19337: ; 0x19337 - ld hl, wd6bb - ld bc, $0601 -.asm_1933d - push bc - push hl - ld a, [hli] - add $f8 - ld b, a - ld a, [hld] - add $8 - ld c, a - dec hl - dec hl - dec hl - ld a, [hl] - dec hl - dec hl - bit 0, [hl] - call nz, Func_1936f - pop hl - pop bc - ld a, c - jr c, .asm_19360 - ld de, $0008 - add hl, de - inc c - dec b - jr nz, .asm_1933d - ret - -.asm_19360 - ld [wTriggeredGameObjectIndex], a - ld [wd6b4], a - add $0 - ld [wTriggeredGameObject], a - ld [wd6b5], a - ret - -Func_1936f: ; 0x1936f - cp $b - jp z, Func_19412 - ld a, [wBallXPos + 1] - sub b - cp $20 - jp nc, Func_19412 - ld b, a - ld a, [wBallYPos + 1] - sub c - cp $20 - jp nc, Func_19412 - ld c, a - ld e, a - ld d, $0 - sla e - rl d - sla e - rl d - sla e - rl d - sla e - rl d - sla e - rl d - ld l, b - ld h, $0 - add hl, de - sla l - rl h - sla l - rl h - ld de, BallPhysicsData_e4000 - add hl, de - ld de, wBallXVelocity - ld a, BANK(BallPhysicsData_e4000) - call ReadByteFromBank - ld c, a - ld a, [de] - add c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_e4000) - call ReadByteFromBank - ld b, a - ld a, [de] - adc b - ld [de], a - inc de - inc hl - push bc - ld a, BANK(BallPhysicsData_e4000) - call ReadByteFromBank - ld c, a - ld a, [de] - add c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_e4000) - call ReadByteFromBank - ld b, a - ld a, [de] - adc b - ld [de], a - inc de - inc hl - bit 7, b - jr z, .asm_193ea - ld a, c - cpl - ld c, a - ld a, b - cpl - ld b, a - inc bc -.asm_193ea - pop hl - bit 7, h - jr z, .asm_193f6 - ld a, l - cpl - ld l, a - ld a, h - cpl - ld h, a - inc hl -.asm_193f6 - add hl, bc - sla l - rl h - ld a, h - cp $2 - jr c, .asm_19410 - ld a, [wd804] - and a - jr nz, .asm_19410 - ld a, $5 - ld [wd803], a - ld a, $8 - ld [wd804], a -.asm_19410 - scf - ret - -Func_19412: ; 0x19312 - and a - ret - -Func_19414: ; 0x19414 - ld a, [wTriggeredGameObject] - inc a - jr nz, .asm_1944f - ld a, [wd6aa] - bit 7, a - jr nz, .asm_1944f - ld a, [wd7e9] - and a - ret z - ld a, [wCurCollisionAttribute] - sub $10 - ret c - cp $c - ret nc - ld a, $1 - ld [wTriggeredGameObjectIndex], a - add $6 - ld [wTriggeredGameObject], a - ld b, a - ld hl, wd6aa - ld [hl], $0 - ld a, [wPreviousTriggeredGameObject] - cp b - jr z, .asm_1944f - ld a, [wTriggeredGameObjectIndex] - ld [hli], a - ld a, [wTriggeredGameObject] - ld [hl], a - scf - ret - -.asm_1944f - and a - ret +INCLUDE "engine/pinball_game/object_collision/mewtwo_bonus_object_collision.asm" Func_19451: ; 0x19451 call Func_19531 @@ -13228,123 +12789,7 @@ INCLUDE "engine/pinball_game/draw_sprites/draw_mewtwo_bonus_sprites.asm" INCLUDE "engine/pinball_game/stage_init/init_diglett_bonus.asm" INCLUDE "engine/pinball_game/ball_init/ball_init_diglett_bonus.asm" INCLUDE "engine/pinball_game/load_stage_data/load_diglett_bonus.asm" - -CheckDiglettBonusStageGameObjectCollisions: ; 0x19ab3 - call CheckDiglettBonusStageDiglettHeadsCollision - call CheckDiglettBonusStageDugtrioCollision - ret - -CheckDiglettBonusStageDiglettHeadsCollision: ; 0x19aba - ld a, [wTriggeredGameObject] - inc a - jr nz, .asm_19b16 - ld a, [wd73b] - bit 7, a - jr nz, .asm_19b16 - ld a, [wd7e9] - and a - ret z ; is a collision happening? - ld a, [wCurCollisionAttribute] - sub $19 - ret c ; is the pinball colliding with a Diglett head? - cp $33 - ret nc - ld c, a - ld b, $0 - ld hl, Data_19b18 - add hl, bc - ld a, [hl] - cp $a - jr nc, .asm_19aed - ld a, [wBallXPos + 1] - cp $48 - ld a, $11 - jr nc, .asm_19af7 - xor a - jr .asm_19af7 - -.asm_19aed - ld a, [wBallXPos + 1] - cp $68 - ld a, $11 - jr nc, .asm_19af7 - xor a -.asm_19af7 - add [hl] - ld [wTriggeredGameObjectIndex], a - add $0 - ld [wTriggeredGameObject], a - ld b, a - ld hl, wd73b - ld [hl], $0 - ld a, [wPreviousTriggeredGameObject] - cp b - jr z, .asm_19b16 - ld a, [wTriggeredGameObjectIndex] - ld [hli], a - ld a, [wTriggeredGameObject] - ld [hl], a - scf - ret - -.asm_19b16 - and a - ret - -Data_19b18: - db $01, $01, $01 - db $02, $02, $02 - db $03, $03, $03 - db $04, $04, $04 - db $05, $05, $05 - db $06, $06, $06 - db $07, $07, $07 - db $08, $08, $08 - db $09, $09, $09 - db $0A, $0A, $0A - db $0B, $0B, $0B - db $0C, $0C, $0C - db $0D, $0D, $0D - db $0E, $0E, $0E - db $0F, $0F, $0F - db $10, $10, $10 - db $11, $11, $11 - -CheckDiglettBonusStageDugtrioCollision: ; 0x19b4b - ld a, [wTriggeredGameObject] - inc a - jr nz, .asm_19b86 - ld a, [wd75f] - bit 7, a - jr nz, .asm_19b86 - ld a, [wd7e9] - and a - ret z - ld a, [wCurCollisionAttribute] - sub $14 - ret c - cp $5 - ret nc - ld a, $1 - ld [wTriggeredGameObjectIndex], a - add $1f - ld [wTriggeredGameObject], a - ld b, a - ld hl, wd75f - ld [hl], $0 - ld a, [wPreviousTriggeredGameObject] - cp b - jr z, .asm_19b86 - ld a, [wTriggeredGameObjectIndex] - ld [hli], a - ld a, [wTriggeredGameObject] - ld [hl], a - scf - ret - -.asm_19b86 - and a - ret +INCLUDE "engine/pinball_game/object_collision/diglett_bonus_object_collision.asm" Func_19b88: ; 0x19b88 call Func_19c52 @@ -14137,7 +13582,7 @@ SECTION "bank7", ROMX, BANK[$7] INCLUDE "engine/pinball_game/stage_init/init_blue_field.asm" INCLUDE "engine/pinball_game/ball_init/ball_init_blue_field.asm" INCLUDE "engine/pinball_game/load_stage_data/load_blue_field.asm" -INCLUDE "engine/collision/blue_stage_game_object_collision.asm" +INCLUDE "engine/pinball_game/object_collision/blue_stage_object_collision.asm" Func_1c715: ; 0x1c715 call ResolveShellderCollision @@ -24318,275 +23763,7 @@ SECTION "bank9", ROMX, BANK[$9] INCLUDE "engine/pinball_game/stage_init/init_meowth_bonus.asm" INCLUDE "engine/pinball_game/ball_init/ball_init_meowth_bonus.asm" INCLUDE "engine/pinball_game/load_stage_data/load_meowth_bonus.asm" - -CheckMeowthBonusStageGameObjectCollisions: ; 0x2414d - call CheckMeowthBonusStageMeowthCollision - call CheckMeowthBonusStageJewelsCollision - call CheckMeowthBonusStageJewelsCollision2 - ret - -CheckMeowthBonusStageMeowthCollision: ; 0x24157 - ld a, [wd6e7] - cp $0 - ret nz - ld a, [wMeowthXPosition] - add -9 - ld b, a - ld a, [wMeowthYPosition] - add $6 - ld c, a - call CheckMeowthCollision - ld a, $3 - ret nc - ret - -CheckMeowthCollision: ; 0x24170 - ld a, [wBallXPos + 1] - sub b - cp $30 - jp nc, .noCollision - ld b, a - ld a, [wBallYPos + 1] - sub c - cp $28 - jp nc, .noCollision - ld c, a - ld e, c - ld d, $0 - sla e - rl d - sla e - rl d - sla e - rl d - ld h, d - ld l, e - sla e - rl d - add hl, de - ld d, h - ld e, l - sla e - rl d - ld l, b - ld h, $0 - add hl, de - ld de, MeowthCollisionAngles - add hl, de - ld a, BANK(MeowthCollisionAngles) - call ReadByteFromBank - bit 7, a - jr nz, .noCollision - sla a - ld [wCollisionForceAngle], a - ld a, $1 - ld [wd7e9], a - ld a, [wd6ec] - cp $2 - ret z - cp $3 - ret z - ld a, [wd713] - and a - ret nz - ld a, [wMeowthYMovement] - and a - jr z, .asm_241ed - ld a, [wMeowthYMovement] - cp $1 - jr nz, .asm_241df - ld a, [wd70b] - cp $3 - jr z, .asm_241eb - jr .asm_241e6 - -.asm_241df - ld a, [wd70c] - cp $3 - jr z, .asm_241eb -.asm_241e6 - ld a, $2 - ld [wd6e7], a -.asm_241eb - scf - ret - -.asm_241ed - ld a, [wMeowthYPosition] - cp $20 - jr nz, .asm_241fd - ld a, [wd70b] - cp $3 - jr z, .asm_24210 - jr .asm_2420b - -.asm_241fd - ld a, [wMeowthYPosition] - cp $10 - jr nz, .asm_24210 - ld a, [wd70c] - cp $3 - jr z, .asm_24210 -.asm_2420b - ld a, $1 - ld [wd6e7], a -.asm_24210 - scf - ret - -.noCollision - and a - ret - -CheckMeowthBonusStageJewelsCollision: ; 0x24214 - ld a, [wd717] - cp $2 - jr nz, .asm_2422e - ld a, [wd71a] - sub $4 - ld b, a - ld a, [wd727] - add $c - ld c, a - call CheckJewelCollision - ld a, $0 - jr c, .asm_24260 -.asm_2422e - ld a, [wd718] - cp $2 - jr nz, .asm_24248 - ld a, [wd71b] - sub $4 - ld b, a - ld a, [wd728] - add $c - ld c, a - call CheckJewelCollision - ld a, $1 - jr c, .asm_24260 -.asm_24248 - ld a, [wd719] - cp $2 - ret nz - ld a, [wd71c] - sub $4 - ld b, a - ld a, [wd729] - add $c - ld c, a - call CheckJewelCollision - ld a, $2 - ret nc -.asm_24260 - ld b, $0 - ld c, a - ld hl, wd717 - add hl, bc - ld a, $3 - ld [hl], a - ld hl, wd714 - add hl, bc - ld a, $0 - ld [hl], a - ret - -CheckJewelCollision: ; 0x24272 - ld a, [wBallXPos + 1] - sub b - cp $18 - jr nc, .noCollision - ld b, a - ld a, [wBallYPos + 1] - sub c - cp $18 - jr nc, .noCollision - ld c, a - ld e, c - ld d, $0 - sla e - rl d - sla e - rl d - sla e - rl d - ld h, d - ld l, e - sla e - rl d - add hl, de - ld d, h - ld e, l - ld l, b - ld h, $0 - add hl, de - ld de, MeowthJewelCollisionAngles - add hl, de - ld a, BANK(MeowthJewelCollisionAngles) - call ReadByteFromBank - bit 7, a - jr nz, .noCollision - sla a - ld [wCollisionForceAngle], a - ld a, $1 - ld [wd7e9], a - scf - ret - -.noCollision - and a - ret - -CheckMeowthBonusStageJewelsCollision2: ; 0x242bb - ld a, [wd721] - cp $2 - jr nz, .asm_242d5 - ld a, [wd724] - sub $4 - ld b, a - ld a, [wd731] - add $c - ld c, a - call CheckJewelCollision - ld a, $0 - jr c, .asm_24307 -.asm_242d5 - ld a, [wd722] - cp $2 - jr nz, .asm_242ef - ld a, [wd725] - sub $4 - ld b, a - ld a, [wd732] - add $c - ld c, a - call CheckJewelCollision - ld a, $1 - jr c, .asm_24307 -.asm_242ef - ld a, [wd723] - cp $2 - ret nz - ld a, [wd726] - sub $4 - ld b, a - ld a, [wd733] - add $c - ld c, a - call CheckJewelCollision - ld a, $2 - ret nc -.asm_24307 - ld b, $0 - ld c, a - ld hl, wd721 - add hl, bc - ld a, $3 - ld [hl], a - ld hl, wd71e - add hl, bc - ld a, $0 - ld [hl], a - ret +INCLUDE "engine/pinball_game/object_collision/meowth_bonus_object_collision.asm" Func_24319: ; 0x2438f ld a, [wd6f4] @@ -28133,98 +27310,7 @@ INCLUDE "engine/pinball_game/draw_sprites/draw_meowth_bonus_sprites.asm" INCLUDE "engine/pinball_game/stage_init/init_seel_bonus.asm" INCLUDE "engine/pinball_game/ball_init/ball_init_seel_bonus.asm" INCLUDE "engine/pinball_game/load_stage_data/load_seel_bonus.asm" - -CheckSeelBonusStageGameObjectCollisions: ; 0x25bbc - call CheckSeelBonusStageSeelHeadCollisions - ret - -CheckSeelBonusStageSeelHeadCollisions: ; 0x25bc0 - ld a, [wd76c] - cp $0 - jr nz, .seel2 - ld a, [wd76e] - ld b, a - ld a, [wd770] - add $14 - ld c, a - call CheckSeelHeadCollision - ld a, $0 - jr c, .hitSeelHead -.seel2 - ld a, [wd776] - cp $0 - jr nz, .seel3 - ld a, [wd778] - ld b, a - ld a, [wd77a] - add $14 - ld c, a - call CheckSeelHeadCollision - ld a, $1 - jr c, .hitSeelHead -.seel3 - ld a, [wd780] - cp $0 - jr nz, .done - ld a, [wd782] - ld b, a - ld a, [wd784] - add $14 - ld c, a - call CheckSeelHeadCollision - ld a, $2 - jr c, .hitSeelHead -.done - ret - -.hitSeelHead - ld [wd768], a - ld a, $1 - ld [wd767], a - ret - -CheckSeelHeadCollision: ; 0x25c12 - ld a, [wBallXPos + 1] - sub b - cp $20 - jr nc, .noCollision - ld b, a - ld a, [wBallYPos + 1] - sub c - cp $20 - jr nc, .noCollision - ld c, a - ld e, c - ld d, $0 - sla e - rl d - sla e - rl d - sla e - rl d - sla e - rl d - sla e - rl d - ld l, b - ld h, $0 - add hl, de - ld de, CircularCollisionAngles - add hl, de - ld a, BANK(CircularCollisionAngles) - call ReadByteFromBank - bit 7, a - jr nz, .noCollision - sla a - ld [wCollisionForceAngle], a - ld a, $1 - ld [wd7e9], a - scf - ret - -.noCollision - and a - ret +INCLUDE "engine/pinball_game/object_collision/seel_bonus_object_collision.asm" Func_25c5a: ; 0x25c5a call Func_25da3 |