diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-03-19 13:39:47 -0700 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-03-19 13:39:47 -0700 |
commit | c542eeaa15807ec6dcde674415d33c81cacdb8a6 (patch) | |
tree | 33de4a2a869d41c82f124103d4d84a7fd324527c | |
parent | 788ab2b99f4bcffddff271591343de391ef8e670 (diff) |
Finish dumping and labeling Red Stage Bottom's game object collision data/routines.
-rwxr-xr-x | home.asm | 13 | ||||
-rwxr-xr-x | main.asm | 186 | ||||
-rwxr-xr-x | wram.asm | 24 |
3 files changed, 125 insertions, 98 deletions
@@ -4950,24 +4950,23 @@ SubTileXPos_CollisionData7: ; 0x268e Data_26be: dr $26be, $2720 -Func_2720: ; 0x2720 +CheckGameObjectCollisions: ; 0x2720 ld a, $ff ld [wTriggeredGameObject], a - call Func_272f + call CheckGameObjectCollisions_ ld a, [wTriggeredGameObject] ld [wPreviousTriggeredGameObject], a ret -Func_272f: ; 0x272f -; not collisions +CheckGameObjectCollisions_: ; 0x272f ld a, [wCurrentStage] call CallInFollowingTable -CallTable_2735: ; 0x2735 +GameObjectCollisions_CallTable: ; 0x2735 ; STAGE_RED_FIELD_TOP padded_dab Func_143e1 ; STAGE_RED_FIELD_BOTTOM - padded_dab StageRedBottom_Func_143f9 + padded_dab CheckRedStageBottomGameObjectCollisions padded_dab Func_18061 @@ -5123,7 +5122,7 @@ IsCollisionInList: ; 0x27da scf ret -PinballCollideWithPoints: ; 0x27fd +PinballCollidesWithPoints: ; 0x27fd ; Checks if pinball collides with any of the (x, y) points in the given list. ; Saves the index of the collided point. ; Input: hl = pointer to array of (x, y) points @@ -5971,7 +5971,7 @@ Func_d909: ; 0xd909 jr z, .noFlipperCollision ld [wd7ea], a .noFlipperCollision - call Func_2720 ; not collision-related + call CheckGameObjectCollisions call Func_281c ; not collision-related ld hl, wKeyConfigMenu call IsKeyPressed @@ -14236,18 +14236,18 @@ Func_143e1: ; 0x143e1 call Func_144da call Func_14439 call Func_144ac - jp Func_1441e + jp CheckRedStageEvolutionTrinketCollision -StageRedBottom_Func_143f9: ; 0x143f9 +CheckRedStageBottomGameObjectCollisions: ; 0x143f9 ld a, [wBallYPos + 1] cp $56 jr nc, .lowerHalfOfScreen - call Func_1444d - call Func_144cd - call Func_14467 - call Func_1445a - call Func_14443 - jp Func_1441e + call CheckRedStageWildPokemonCollision + call CheckRedStageBottomStaryuCollision + call CheckRedStageDiglettCollision + call CheckRedStageBonusMultiplierCollision + call CheckRedStageSlotCollision + jp CheckRedStageEvolutionTrinketCollision .lowerHalfOfScreen call CheckRedStageBumpersCollision @@ -14255,7 +14255,7 @@ StageRedBottom_Func_143f9: ; 0x143f9 call CheckRedStageCAVELightsCollision jp CheckRedStageLaunchAlleyCollision -Func_1441e: ; 0x1441e +CheckRedStageEvolutionTrinketCollision: ; 0x1441e xor a ld [wd578], a ld a, [wd551] @@ -14270,7 +14270,7 @@ Func_1441e: ; 0x1441e ld a, [hli] ld h, [hl] ld l, a - jp PinballCollideWithPoints + jp PinballCollidesWithPoints Func_14439: ; 0x14439 ld de, Data_145b5 @@ -14278,30 +14278,32 @@ Func_14439: ; 0x14439 scf jp HandleGameObjectCollision -Func_14443: ; 0x14443 - ld de, Data_145bb - ld bc, wd601 +CheckRedStageSlotCollision: ; 0x14443 + ld de, RedStageSlotCollisionData + ld bc, wSlotCollision scf jp HandleGameObjectCollision -Func_1444d: ; 0x1444d - ld de, Data_145af - ld hl, Data_1459d - ld bc, wd5c7 +CheckRedStageWildPokemonCollision: ; 0x1444d + ld de, RedStageWildPokemonCollisionData + ld hl, RedStageWildPokemonCollisionAttributes + ld bc, wWildMonCollision and a jp HandleGameObjectCollision -Func_1445a: ; 0x1445a - ld de, Data_145c9 - ld hl, Data_145c1 - ld bc, wd60a +CheckRedStageBonusMultiplierCollision: ; 0x1445a +; There are two small railings above the Digletts. If you hit them, you get a bonus +; multiplier. I can't think of a good name for these two obsjects. + ld de, RedStageBonusMultipliersCollisionData + ld hl, RedStageBonusMultipliersCollisionAttributes + ld bc, wWhichBonusMultiplierRailing and a jp HandleGameObjectCollision -Func_14467: ; 0x14467 - ld de, Data_144f4 - ld hl, Data_144ee - ld bc, wd4ed +CheckRedStageDiglettCollision: ; 0x14467 + ld de, RedStageDiglettCollisionData + ld hl, RedStageDiglettCollisionAttributes + ld bc, wWhichDiglett and a jp HandleGameObjectCollision @@ -14352,14 +14354,16 @@ Func_144b6: ; 0x144b6 Func_144c0: ; 0x144c0 ld de, Data_1457d ld hl, Data_14578 - ld bc, wd500 + ld bc, wStaryuCollision and a jp HandleGameObjectCollision -Func_144cd: ; 0x144cd - ld de, Data_14588 - ld hl, Data_14583 - ld bc, wd500 +CheckRedStageBottomStaryuCollision: ; 0x144cd +; Staryu collision can actually be hit via the bottom screen, despite the fact +; that the Staryu is located on the (bottom of the) top screen. + ld de, RedStageStaryuCollisionData + ld hl, RedStageStaryuCollisionAttributes + ld bc, wStaryuCollision and a jp HandleGameObjectCollision @@ -14369,17 +14373,22 @@ Func_144da: ; 0x144da scf jp HandleGameObjectCollision -CheckRedStagePikachuCollision +CheckRedStagePikachuCollision: ld de, RedStagePikachuCollisionData ld bc, wWhichPikachu scf jp HandleGameObjectCollision -Data_144ee: - db $00, $64, $65, $68, $69, $FF +RedStageDiglettCollisionAttributes: + db $00 ; flat list + db $64, $65, $68, $69 + db $FF ; terminator -Data_144f4: - db $08, $0C, $01, $20, $40, $02, $80, $40, $FF +RedStageDiglettCollisionData: + db $08, $0C ; x, y bounding box + db $01, $20, $40 ; id, x, y + db $02, $80, $40 ; id, x, y + db $FF ; terminator Data_144fd: dr $144fd, $14515 @@ -14426,11 +14435,15 @@ Data_14578: Data_1457d: dr $1457d, $14583 -Data_14583: - dr $14583, $14588 +RedStageStaryuCollisionAttributes: + db $00 ; flat list + db $56, $5B, $5C + db $FF ; terminator -Data_14588: - dr $14588, $1458e +RedStageStaryuCollisionData: + db $08, $06 ; x, y bounding box + db $1A, $40, $08 ; id, x, y + db $FF ; terminator Data_1458e: dr $1458e, $14594 @@ -14441,23 +14454,34 @@ RedStagePikachuCollisionData: db $1D, $92, $7C ; id, x, y db $FF ; terminator -Data_1459d: - dr $1459d, $145af +RedStageWildPokemonCollisionAttributes: + db $00 ; flat list + db $D0, $D1, $D2, $D3, $D4, $D5, $D6, $D7, $D8, $D9, $DA, $DB, $DC, $DD, $DE, $DF + db $FF ; terminator -Data_145af: - dr $145af, $145b5 +RedStageWildPokemonCollisionData: + db $1A, $1A ; x, y bounding box + db $1E, $50, $40 ; id, x, y + db $FF ; terminator Data_145b5: dr $145b5, $145bb -Data_145bb: - dr $145bb, $145c1 +RedStageSlotCollisionData: + db $04, $04 ; x, y bounding box + db $20, $50, $16 ; id, x, y + db $FF ; terminator -Data_145c1: - dr $145c1, $145c9 +RedStageBonusMultipliersCollisionAttributes: + db $00 ; flat list + db $4C, $4B, $48, $47, $4D, $4A + db $FF ; terminator -Data_145c9: - dr $145c9, $145d2 +RedStageBonusMultipliersCollisionData: + db $07, $07 ; x, y bounding box + db $21, $2C, $20 ; id, x, y + db $22, $74, $20 ; id, x, y + db $FF ; terminator RedStageEvolutionTrinketCoordinatePointers: ; 0x145d2 dw RedStageTopEvolutionTrinketCoords @@ -14682,11 +14706,11 @@ Data_1478b: dr $1478b, $14795 Func_14795: ; 0x14795 - ld a, [wd5c7] + ld a, [wWildMonCollision] and a ret z xor a - ld [wd5c7], a + ld [wWildMonCollision], a ld a, $1 ld [wBallHitWildMon], a lb de, $00, $06 @@ -14694,12 +14718,12 @@ Func_14795: ; 0x14795 ret Func_147aa: ; 0x147aa - ld a, [wd4ed] + ld a, [wWhichDiglett] and a jp z, .asm_14834 xor a - ld [wd4ed], a - ld a, [wd4ee] + ld [wWhichDiglett], a + ld a, [wWhichDiglettId] sub $1 sla a ld c, a @@ -16629,11 +16653,11 @@ asm_1620f: ; 0x1620f ret Func_16279: ; 0x16279 - ld a, [wd601] + ld a, [wSlotCollision] and a jr z, .asm_162ae xor a - ld [wd601], a + ld [wSlotCollision], a ld a, [wd604] and a ret z @@ -17192,11 +17216,11 @@ Func_16766: ; 0x16766 ret Func_16781: ; 0x16781 - ld a, [wd500] + ld a, [wStaryuCollision] and a jr z, .asm_167bd xor a - ld [wd500], a + ld [wStaryuCollision], a ld a, [wd503] and a jr nz, .asm_167c2 @@ -17242,11 +17266,11 @@ Func_16781: ; 0x16781 jp Func_15499 Func_167ff: ; 0x167ff - ld a, [wd500] + ld a, [wStaryuCollision] and a jr z, .asm_16839 xor a - ld [wd500], a + ld [wStaryuCollision], a ld a, [wd503] and a jr nz, .asm_1683e @@ -17394,14 +17418,14 @@ Data_16bef: dr $16bef, $16d9d Func_16d9d: ; 016d9d - ld a, [wd60a] + ld a, [wWhichBonusMultiplierRailing] and a jp z, Func_16e51 xor a - ld [wd60a], a + ld [wWhichBonusMultiplierRailing], a lb de, $00, $0d call PlaySoundEffect - ld a, [wd60b] + ld a, [wWhichBonusMultiplierRailingId] sub $21 jr nz, .asm_16ddc ld a, $9 @@ -18436,7 +18460,7 @@ Func_18060: ; 0x18060 Func_18061: ; 0x18061 ret -CheckRedStageLaunchAlleyCollision: ; 0x18062 +CheckRedStageLaunchAlleyCollision_: ; 0x18062 callba CheckRedStageLaunchAlleyCollision ret @@ -22487,14 +22511,14 @@ Func_1c59c: ; 0x1c59c Func_1c5a6: ; 0x1c5a6 ld de, Data_1c686 ld hl, Data_1c67a - ld bc, wd60a + ld bc, wWhichBonusMultiplierRailing and a jp HandleGameObjectCollision Func_1c5b3: ; 0x1c5b3 ld de, Data_1c695 ld hl, Data_1c68f - ld bc, wd4ed + ld bc, wWhichDiglett and a jp HandleGameObjectCollision @@ -22512,14 +22536,14 @@ Func_1c5ca: ; 0x1c5ca Func_1c5d4: ; 0x1c5d4 ld de, Data_1c6b9 - ld bc, wd601 + ld bc, wSlotCollision scf jp HandleGameObjectCollision Func_1c5de: ; 0x1c5de ld de, Data_1c6d1 ld hl, Data_1c6bf - ld bc, wd5c7 + ld bc, wWildMonCollision and a jp HandleGameObjectCollision @@ -22533,11 +22557,11 @@ Func_1c5eb: ; 0x1c5eb bit 0, a jr nz, .asm_1c601 ld hl, BlueTopEvolutionTrinketCoords - jp PinballCollideWithPoints + jp PinballCollidesWithPoints .asm_1c601 ld hl, BlueBottomEvolutionTrinketCoords - jp PinballCollideWithPoints + jp PinballCollidesWithPoints Func_1c607: ; 0x1c607 ld de, Data_1c70f @@ -23005,11 +23029,11 @@ Func_1ca29: ; 0x1ca29 ret Func_1ca4a: ; 1ca4a - ld a, [wd5c7] + ld a, [wWildMonCollision] and a ret z xor a - ld [wd5c7], a + ld [wWildMonCollision], a ld a, $1 ld [wBallHitWildMon], a lb de, $00, $06 @@ -23768,14 +23792,14 @@ Data_1d41d: Func_1d438: ; 0x1d438 call Func_1d692 - ld a, [wd60a] + ld a, [wWhichBonusMultiplierRailing] and a jp z, Func_1d51b xor a - ld [wd60a], a + ld [wWhichBonusMultiplierRailing], a lb de, $00, $0d call PlaySoundEffect - ld a, [wd60b] + ld a, [wWhichBonusMultiplierRailingId] sub $f jr nz, .asm_1d48e ld a, [hGameBoyColorFlag] @@ -24123,13 +24147,13 @@ Data_1d97a: dr $1d97a, $1dbd2 Func_1dbd2: ; 0x1dbd2 - ld a, [wd4ed] + ld a, [wWhichDiglett] and a jp z, Func_1dc8e cp $2 jr z, .asm_1dc33 xor a - ld [wd4ed], a + ld [wWhichDiglett], a ld hl, wLeftMapMoveCounter ld a, [hl] cp $3 @@ -24167,7 +24191,7 @@ Func_1dbd2: ; 0x1dbd2 .asm_1dc33 xor a - ld [wd4ed], a + ld [wWhichDiglett], a ld hl, wRightMapMoveCounter ld a, [hl] cp $3 @@ -25120,11 +25144,11 @@ Data_1e71f: dr $1e71f, $1e757 Func_1e757: ; 0x1e757 - ld a, [wd601] + ld a, [wSlotCollision] and a jr z, .asm_1e78c xor a - ld [wd601], a + ld [wSlotCollision], a ld a, [wd604] and a ret z @@ -411,10 +411,9 @@ wPreviousTriggeredGameObject:: ; 0xd4ec ; and object two frames in a row. It has to "un-collide" before it can collide again. ds $1 -wd4ed:: ; 0xd4ed +wWhichDiglett:: ; 0xd4ed ds $1 - -wd4ee:: ; 0xd4ee +wWhichDiglettId:: ; 0xd4ee ds $1 wd4ef:: ; 0xd4ef @@ -465,7 +464,8 @@ wBellsproutAnimationFrame:: ; 0xd4fe wBellsproutAnimationFrameIndex:: ; 0xd4ff ds $1 -wd500:: ; 0xd500 +wStaryuCollision:: ; 0xd500 +; Second byte is set by HandleGameObjectCollision, but is unused ds $2 wd502:: ; 0xd502 @@ -763,8 +763,12 @@ wNumMewHitsLow:: ; 0xd5c5 wd5c6:: ; 0xd5c6 ds $1 -wd5c7:: ; 0xd5c7 - ds $3 +wWildMonCollision:: ; 0xd5c7 +; Set by HandleGameObjectCollision +; Second byte gets set, but is unused + ds $2 + + ds $1 wd5ca:: ; 0xd5ca ds $1 @@ -832,7 +836,8 @@ wd5fe:: ; 0xd5fe wd600:: ; 0xd600 ds $1 -wd601:: ; 0xd601 +wSlotCollision:: ; 0xd601 +; Second byte is set by HandleGameObjectCollision, but is unused ds $2 wd603:: ; 0xd603 @@ -853,10 +858,9 @@ wd608:: ; 0xd608 wd609:: ; 0xd609 ds $1 -wd60a:: ; 0xd60a +wWhichBonusMultiplierRailing:: ; 0xd60a ds $1 - -wd60b:: ; 0xd60b +wWhichBonusMultiplierRailingId:: ; 0xd60b ds $1 wd60c:: ; 0xd60c |