mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-04-24 23:26:59 -05:00
kickback naming, catch state enum
This commit is contained in:
parent
69f931d646
commit
9e19f7838b
12
data/rom_1.s
12
data/rom_1.s
|
|
@ -1445,8 +1445,8 @@ gPelipper_Gfx:: @ 0x084BB16C
|
|||
.incbin "graphics/stage/sapphire/pelipper.4bpp"
|
||||
.incbin "graphics/stage/sapphire/charger.4bpp"
|
||||
|
||||
gCatchCounterDigitTilesGfx:: @ 0x084C00EC
|
||||
.incbin "baserom.gba", 0x4C00EC, 0x700
|
||||
gChargeFillIndicator_Gfx:: @ 0x084C00EC
|
||||
.incbin "graphics/stage/main/charge_fill_indicator.4bpp"
|
||||
|
||||
gPikaSaverTilesGfx:: @ 0x084C07EC
|
||||
.incbin "baserom.gba", 0x4C07EC, 0x480
|
||||
|
|
@ -1613,9 +1613,9 @@ gOptionsBGMList:: @ 0x08527D22
|
|||
|
||||
gOptionsSEList:: @ 0x08527D66
|
||||
.2byte SE_MENU_SELECT, SE_MENU_CANCEL, SE_MENU_MOVE, SE_MENU_POPUP_OPEN, SE_MENU_POPUP_CLOSE
|
||||
.2byte SE_SCORE_ENTRY_A_B_MOVE, SE_SCORE_ENTRY_LETTER_CHANGE, SE_UNKNOWN_0x6D, SE_FLIPPER_PRESSED, SE_SLINGSHOT_HIT
|
||||
.2byte SE_POKEMON_CATCH_HIT, SE_UNKNOWN_0x75, SE_TRIGGER_BUTTON_HIT, SE_WALL_HIT, SE_TILT_TRIGGERED
|
||||
.2byte SE_UNKNOWN_0x79, SE_UNKNOWN_0x7A, SE_UNKNOWN_0x7B, SE_UNKNOWN_0x7C, SE_UNKNOWN_0x7E
|
||||
.2byte SE_SCORE_ENTRY_A_B_MOVE, SE_SCORE_ENTRY_LETTER_CHANGE, SE_DEX_INFO_FIELD_SELECT_MOVE, SE_FLIPPER_PRESSED, SE_SLINGSHOT_HIT
|
||||
.2byte SE_POKEMON_CATCH_HIT, SE_PICHU_IN_POSITION_CHIRP, SE_TRIGGER_BUTTON_HIT, SE_WALL_HIT, SE_TILT_TRIGGERED
|
||||
.2byte SE_PIKA_SPINNER_CLACK, SE_PIKA_FULL_CHARGE_1_UP, SE_UNKNOWN_0x7B, SE_KICKBACK_THUNDERWAVE, SE_UNKNOWN_0x7E
|
||||
.2byte SE_UNKNOWN_0x80, SE_UNKNOWN_0x81, SE_EVO_SELECTION_MOVE, SE_EVO_SELECTION_CONFIRM, SE_UNKNOWN_0x84
|
||||
.2byte SE_UNKNOWN_0x85, SE_UNKNOWN_0x86, SE_UNKNOWN_0x87, SE_FAILURE, SE_UNKNOWN_0x8B
|
||||
.2byte SE_UNKNOWN_0x8C, SE_UNKNOWN_0x8D, SE_UNKNOWN_0x8E, SE_UNKNOWN_0x8F, SE_UNKNOWN_0x91
|
||||
|
|
@ -1649,7 +1649,7 @@ gOptionsSEList:: @ 0x08527D66
|
|||
.2byte SE_UNKNOWN_0x13B, SE_UNKNOWN_0x13C, SE_UNKNOWN_0x13D, SE_UNKNOWN_0x13E, SE_UNKNOWN_0x140
|
||||
.2byte SE_JIRACHI_MOVE, SE_JIRACHI_HIT, SE_UNKNOWN_0x146, SE_UNKNOWN_0x147, SE_UNKNOWN_0x148
|
||||
.2byte SE_UNKNOWN_0x149, SE_WHISCASH_EARTHQUAKE, SE_HIGH_SCORE_EARNED, SE_UNKNOWN_0x14B, SE_UNKNOWN_0x71
|
||||
.2byte SE_UNKNOWN_0xB1, SE_UNKNOWN_0xB2, SE_UNKNOWN_0xB3, SE_UNKNOWN_0x142
|
||||
.2byte SE_PIKACHU_KICKBACK, SE_UNKNOWN_0xB2, SE_PICHU_KICKBACK, SE_PIKA_NO_KICKBACK
|
||||
|
||||
|
||||
gDefaultButtonConfigs:: @ 0x08527ED6
|
||||
|
|
|
|||
14
data/rom_2.s
14
data/rom_2.s
|
|
@ -4131,11 +4131,19 @@ gCatchOverlayAnimData:: @ 0x086ADEE0
|
|||
gPikaSaverAnimFrameTable:: @ 0x086ADF48
|
||||
.incbin "baserom.gba", 0x6ADF48, 0x42
|
||||
|
||||
gCatchHoleXPositions:: @ 0x086ADF8A
|
||||
.incbin "baserom.gba", 0x6ADF8A, 0x6
|
||||
gOutlaneCenterXPositions:: @ 0x086ADF8A
|
||||
.2byte 33,206
|
||||
.align 2,0
|
||||
|
||||
gPikaSaverWaypoints:: @ 0x086ADF90
|
||||
.incbin "baserom.gba", 0x6ADF90, 0x38
|
||||
@vector32 positions
|
||||
.4byte 1320, 4480 @ Start Walk In
|
||||
.4byte 1350, 4260
|
||||
.4byte 2040, 3860
|
||||
.4byte 2100, 3960 @ Home in Chute
|
||||
.4byte 1930, 3860 @ Start Walk Out
|
||||
.4byte 1340, 4260
|
||||
.4byte 1320, 4480
|
||||
|
||||
gArrowBounceOffsets:: @ 0x086ADFC8
|
||||
.incbin "baserom.gba", 0x6ADFC8, 0xC
|
||||
|
|
|
|||
|
|
@ -3825,21 +3825,21 @@ gDirectSound_086885EC:: @ 0x086885EC
|
|||
.include "sound/songs/se_score_entry_a_b_move.s"
|
||||
.include "sound/songs/se_score_entry_letter_change.s"
|
||||
.include "sound/songs/se_unk_6c.s"
|
||||
.include "sound/songs/se_unk_6d.s"
|
||||
.include "sound/songs/se_dex_info_field_select_move.s"
|
||||
.include "sound/songs/se_unk_6e.s"
|
||||
.include "sound/songs/se_unk_6f.s"
|
||||
.include "sound/songs/se_unk_71.s"
|
||||
.include "sound/songs/se_flipper_pressed.s"
|
||||
.include "sound/songs/se_slingshot_hit.s"
|
||||
.include "sound/songs/se_pokemon_catch_hit.s"
|
||||
.include "sound/songs/se_unk_75.s"
|
||||
.include "sound/songs/se_pichu_in_position_chirp.s"
|
||||
.include "sound/songs/se_trigger_button_hit.s"
|
||||
.include "sound/songs/se_wall_hit.s"
|
||||
.include "sound/songs/se_tilt_triggered.s"
|
||||
.include "sound/songs/se_unk_79.s"
|
||||
.include "sound/songs/se_unk_7a.s"
|
||||
.include "sound/songs/se_pika_spinner_clack.s"
|
||||
.include "sound/songs/se_pika_full_charge_1_up.s"
|
||||
.include "sound/songs/se_unk_7b.s"
|
||||
.include "sound/songs/se_unk_7c.s"
|
||||
.include "sound/songs/se_kickback_thunderwave.s"
|
||||
.include "sound/songs/se_unk_7d.s"
|
||||
.include "sound/songs/se_unk_7e.s"
|
||||
.include "sound/songs/se_unk_7f.s"
|
||||
|
|
@ -3891,9 +3891,9 @@ gDirectSound_086885EC:: @ 0x086885EC
|
|||
.include "sound/songs/se_pika_charge_ti.s"
|
||||
.include "sound/songs/se_pika_charge_high_do.s"
|
||||
.include "sound/songs/se_unk_b0.s"
|
||||
.include "sound/songs/se_unk_b1.s"
|
||||
.include "sound/songs/se_pikachu_kickback.s"
|
||||
.include "sound/songs/se_unk_b2.s"
|
||||
.include "sound/songs/se_unk_b3.s"
|
||||
.include "sound/songs/se_pichu_kickback.s"
|
||||
.include "sound/songs/se_unk_b4.s"
|
||||
.include "sound/songs/se_ruby_bumper_hit.s"
|
||||
.include "sound/songs/se_unk_b7.s"
|
||||
|
|
@ -4011,7 +4011,7 @@ gDirectSound_086885EC:: @ 0x086885EC
|
|||
.include "sound/songs/se_unk_13e.s"
|
||||
.include "sound/songs/se_unk_13f.s"
|
||||
.include "sound/songs/se_unk_140.s"
|
||||
.include "sound/songs/se_unk_142.s"
|
||||
.include "sound/songs/se_pika_no_kickback.s"
|
||||
.include "sound/songs/se_jirachi_move.s"
|
||||
.include "sound/songs/se_jirachi_hit.s"
|
||||
.include "sound/songs/se_unk_146.s"
|
||||
|
|
|
|||
BIN
graphics/stage/main/charge_fill_indicator.png
Normal file
BIN
graphics/stage/main/charge_fill_indicator.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 521 B |
|
|
@ -59,38 +59,38 @@
|
|||
#define SE_MENU_POPUP_CLOSE 0x69 // SE 5; Yellow window popup disappears (eg: pokedox transfer confirmation)
|
||||
#define SE_SCORE_ENTRY_A_B_MOVE 0x6A // SE 6; Drum?
|
||||
#define SE_SCORE_ENTRY_LETTER_CHANGE 0x6B // SE 7; RS: Pokédex scroll
|
||||
#define SE_UNKNOWN_0x6C 0x6C // RS: Bike hop
|
||||
#define SE_UNKNOWN_0x6D 0x6D // SE 8
|
||||
#define SE_UNKNOWN_0x6E 0x6E // same as SE1
|
||||
#define SE_UNKNOWN_0x6F 0x6F // same as SE2
|
||||
#define SE_UNKNOWN_0x6C 0x6C // Unused: RS: Bike hop
|
||||
#define SE_DEX_INFO_FIELD_SELECT_MOVE 0x6D // SE 8; bonus/normal field selection, dex info page
|
||||
#define SE_UNKNOWN_0x6E 0x6E // Unused: same as SE1
|
||||
#define SE_UNKNOWN_0x6F 0x6F // Unused: same as SE2
|
||||
#define SE_UNKNOWN_0x70 0x70 // No Sound
|
||||
#define SE_UNKNOWN_0x71 0x71 // Duplicated of SE 70 *thwip*
|
||||
#define SE_FLIPPER_PRESSED 0x72 // SE9 Flipper
|
||||
#define SE_SLINGSHOT_HIT 0x73 // SE10 Triangle bumper hit
|
||||
#define SE_POKEMON_CATCH_HIT 0x74 // SE11 Pokemon Catch hit
|
||||
#define SE_UNKNOWN_0x75 0x75 // SE12 *high chirp*
|
||||
#define SE_PICHU_IN_POSITION_CHIRP 0x75 // SE12 *high chirp*
|
||||
#define SE_TRIGGER_BUTTON_HIT 0x76 // SE13 Trigger button hit
|
||||
#define SE_WALL_HIT 0x77 // SE14 ball hits wall
|
||||
#define SE_TILT_TRIGGERED 0x78 // SE15 *metal gate bounce?*
|
||||
#define SE_UNKNOWN_0x79 0x79 // SE16 *ball flat clack*
|
||||
#define SE_UNKNOWN_0x7A 0x7A // SE17 *high trill - radar*
|
||||
#define SE_UNKNOWN_0x7B 0x7B // SE18 Sustained machine noise. - Same as 95
|
||||
#define SE_UNKNOWN_0x7C 0x7C // SE19 *extended stable electric tone* (SE153 has a short form)
|
||||
#define SE_PIKA_SPINNER_CLACK 0x79 // SE16 *ball flat clack*
|
||||
#define SE_PIKA_FULL_CHARGE_1_UP 0x7A // SE17 *high trill - radar*
|
||||
#define SE_UNKNOWN_0x7B 0x7B // SE18 Otherwise unused. Sustained machine noise. - Same as 95
|
||||
#define SE_KICKBACK_THUNDERWAVE 0x7C // SE19 *extended stable electric tone* (SE153 has a short form)
|
||||
#define SE_UNKNOWN_0x7D 0x7D // ?? *Kerplunk* ??
|
||||
#define SE_UNKNOWN_0x7E 0x7E // SE20 Same as SE1
|
||||
#define SE_UNKNOWN_0x7F 0x7F // ?? Questioning Cry??
|
||||
#define SE_UNKNOWN_0x80 0x80 // SE21 *flying slash*
|
||||
#define SE_UNKNOWN_0x81 0x81 // SE22 *Pokeball hit ground; low pitched related to SE47*
|
||||
#define SE_UNKNOWN_0x81 0x81 // *SE22 *Pokeball hit ground; low pitched related to SE47*
|
||||
#define SE_EVO_SELECTION_MOVE 0x82 // SE23 Evo Selection list move
|
||||
#define SE_EVO_SELECTION_CONFIRM 0x83 // SE24 Evo Selection confirmed
|
||||
#define SE_UNKNOWN_0x84 0x84 // SE25 Evo Symbol Spawned; Ball Respawn - Bonus board
|
||||
#define SE_UNKNOWN_0x85 0x85 // SE26 Evo Symbol finished spawning (Same as SE43)
|
||||
#define SE_UNKNOWN_0x86 0x86 // SE27 Evo Symbol collected
|
||||
#define SE_UNKNOWN_0x87 0x87 // SE28 *Pokeball/power upgrade? *
|
||||
#define SE_UNKNOWN_0x84 0x84 // *SE25 Evo Symbol Spawned; Ball Respawn - Bonus board
|
||||
#define SE_UNKNOWN_0x85 0x85 // *SE26 Evo Symbol finished spawning (Same as SE43)
|
||||
#define SE_UNKNOWN_0x86 0x86 // *SE27 Evo Symbol collected
|
||||
#define SE_UNKNOWN_0x87 0x87 // *SE28 *Pokeball/power upgrade? *
|
||||
#define SE_UNKNOWN_0x88 0x88 // ?? *Downward compliment to SE28* ??
|
||||
#define SE_UNKNOWN_0x89 0x89 // ?? *Coin collect*??
|
||||
#define SE_FAILURE 0x8A // SE29 Denied. ('Unable to select' in pokedex)
|
||||
#define SE_UNKNOWN_0x8B 0x8B // SE30 Evo/Catch mode initiated
|
||||
#define SE_UNKNOWN_0x8B 0x8B // *SE30 Evo/Catch mode initiated
|
||||
#define SE_UNKNOWN_0x8C 0x8C // SE31 Catch Tile Revealed (Same as 114, 129, 139, 151)
|
||||
#define SE_UNKNOWN_0x8D 0x8D // SE32 *Descending roar*
|
||||
#define SE_UNKNOWN_0x8E 0x8E // SE33 *Vibrating ting*
|
||||
|
|
@ -104,8 +104,8 @@
|
|||
#define SE_UNKNOWN_0x96 0x96 // SE40 Launcher catches ball
|
||||
#define SE_UNKNOWN_0x97 0x97 // SE41 *Hit closed door*
|
||||
#define SE_UNKNOWN_0x98 0x98 // SE42 *Hit and enclose*
|
||||
#define SE_UNKNOWN_0x99 0x99 // SE43 ?Launcher fully charged? Duplicate of SE26
|
||||
#define SE_UNKNOWN_0x9A 0x9A // SE44 Pokemon being absorbed into ball (when catching)
|
||||
#define SE_UNKNOWN_0x99 0x99 // *SE43 ?Launcher fully charged? Duplicate of SE26
|
||||
#define SE_UNKNOWN_0x9A 0x9A // *SE44 Pokemon being absorbed into ball (when catching)
|
||||
#define SE_UNKNOWN_0x9B 0x9B // SE45 *gusty wind landing*
|
||||
#define SE_UNKNOWN_0x9C 0x9C // SE46 Pokemon entered Pokeball (when catching)
|
||||
#define SE_UNKNOWN_0x9D 0x9D // SE47 Pokeball hit ground; High pitched related to 22
|
||||
|
|
@ -128,9 +128,9 @@
|
|||
#define SE_PIKA_CHARGE_TI 0xAE // SE63 Ti (Title pokemon pinball logo tones / ramp spin pikachu charger)
|
||||
#define SE_PIKA_CHARGE_HIGH_DO 0xAF // SE64 Do (Title pokemon pinball logo tones / ramp spin pikachu charger)
|
||||
#define SE_UNKNOWN_0xB0 0xB0 // SE65 *extended flight takeoff*
|
||||
#define SE_UNKNOWN_0xB1 0xB1 // SE181 Pi~Ka CHU!
|
||||
#define SE_PIKACHU_KICKBACK 0xB1 // SE181 Pi~Ka CHU!
|
||||
#define SE_UNKNOWN_0xB2 0xB2 // SE182 Pika - pika - pi-ka
|
||||
#define SE_UNKNOWN_0xB3 0xB3 // SE183 Pi~ Chu!
|
||||
#define SE_PICHU_KICKBACK 0xB3 // SE183 Pi~ Chu!
|
||||
#define SE_UNKNOWN_0xB4 0xB4 // ?? Duplicate of SE49
|
||||
#define SE_UNKNOWN_0xB5 0xB5 // No Sound
|
||||
#define SE_RUBY_BUMPER_HIT 0xB6 // SE66 *Puddle slap* (Hit lotad/chinchou/whiscash)
|
||||
|
|
@ -177,7 +177,7 @@
|
|||
#define SE_UNKNOWN_0xDF 0xDF // SE95 Sapphire board Hatch machine
|
||||
#define SE_UNKNOWN_0xE0 0xE0 // SE96 Sapphire Lower Hatched Pokemon
|
||||
#define SE_UNKNOWN_0xE1 0xE1 // SE97 *Close tailgate*
|
||||
#define SE_UNKNOWN_0xE2 0xE2 // SE98 *Water 3*
|
||||
#define SE_UNKNOWN_0xE2 0xE2 // *SE98 *Water 3*
|
||||
#define SE_UNKNOWN_0xE3 0xE3 // SE99 Duplicate of SE68
|
||||
#define SE_UNKNOWN_0xE4 0xE4 // SE100 *Bird Cry*
|
||||
#define SE_UNKNOWN_0xE5 0xE5 // SE101 Duplicate of SE70
|
||||
|
|
@ -203,26 +203,26 @@
|
|||
#define SE_UNKNOWN_0xF9 0xF9 // SE117 Dusclops Captured
|
||||
#define SE_UNKNOWN_0xFA 0xFA // *Muted Triangle tripple tap*
|
||||
#define SE_UNKNOWN_0xFB 0xFB // No Sound
|
||||
#define SE_UNKNOWN_0xFC 0xFC // SE118 Kecleon looks side (same as SE84)
|
||||
#define SE_UNKNOWN_0xFD 0xFD // SE119 Kecleon Vanish (same as 109)
|
||||
#define SE_UNKNOWN_0xFE 0xFE // SE120 Kecleon found exclamation
|
||||
#define SE_UNKNOWN_0xFF 0xFF // SE121 Kecleon walk
|
||||
#define SE_UNKNOWN_0x100 0x100 // SE122 Kecleon trip
|
||||
#define SE_UNKNOWN_0x101 0x101 // SE123 Kecleon hit
|
||||
#define SE_UNKNOWN_0x102 0x102 // SE124 Kecleon hits ground; Duplicate of 97
|
||||
#define SE_UNKNOWN_0x103 0x103 // SE125 Kecleon surrenders
|
||||
#define SE_UNKNOWN_0xFC 0xFC // *SE118 Kecleon looks side (same as SE84)
|
||||
#define SE_UNKNOWN_0xFD 0xFD // *SE119 Kecleon Vanish (same as 109)
|
||||
#define SE_UNKNOWN_0xFE 0xFE // *SE120 Kecleon found exclamation
|
||||
#define SE_UNKNOWN_0xFF 0xFF // *SE121 Kecleon walk
|
||||
#define SE_UNKNOWN_0x100 0x100 // *SE122 Kecleon trip
|
||||
#define SE_UNKNOWN_0x101 0x101 // *SE123 Kecleon hit
|
||||
#define SE_UNKNOWN_0x102 0x102 // *SE124 Kecleon hits ground; Duplicate of 97
|
||||
#define SE_UNKNOWN_0x103 0x103 // *SE125 Kecleon surrenders
|
||||
#define SE_KECLEON_TREE_HIT 0x104 // SE126 Kecleon tree hit
|
||||
#define SE_KECLEON_SCOPE_FALL 0x105 // SE127 Package falls from tree; Duplicate of 105
|
||||
#define SE_KECLEON_SCOPE_ACTIVATED 0x106 // SE128 Scope initiates
|
||||
#define SE_UNKNOWN_0x107 0x107 // No Sound
|
||||
#define SE_UNKNOWN_0x108 0x108 // No Sound
|
||||
#define SE_UNKNOWN_0x109 0x109 // No Sound
|
||||
#define SE_UNKNOWN_0x10A 0x10A // SE129 Kyogre Hit
|
||||
#define SE_UNKNOWN_0x10B 0x10B // SE130 Kyogre Emerges / 'jumps'
|
||||
#define SE_UNKNOWN_0x10C 0x10C // SE131 Kyogre Dives / jump landing
|
||||
#define SE_UNKNOWN_0x10D 0x10D // SE132 Kyogre Create Whirlpool
|
||||
#define SE_UNKNOWN_0x10E 0x10E // SE133 Kyogre Ice Breath ring
|
||||
#define SE_UNKNOWN_0x10F 0x10F // SE134 *Whirlpool launches ball skyward*
|
||||
#define SE_UNKNOWN_0x10A 0x10A // *SE129 Kyogre Hit
|
||||
#define SE_UNKNOWN_0x10B 0x10B // *SE130 Kyogre Emerges / 'jumps'
|
||||
#define SE_UNKNOWN_0x10C 0x10C // *SE131 Kyogre Dives / jump landing
|
||||
#define SE_UNKNOWN_0x10D 0x10D // *SE132 Kyogre Create Whirlpool
|
||||
#define SE_UNKNOWN_0x10E 0x10E // *SE133 Kyogre Ice Breath ring
|
||||
#define SE_UNKNOWN_0x10F 0x10F // *SE134 *Whirlpool launches ball skyward*
|
||||
#define SE_UNKNOWN_0x110 0x110 // SE135 Kyrogre freezes ball
|
||||
#define SE_UNKNOWN_0x111 0x111 // SE136 Freeze escape hit
|
||||
#define SE_UNKNOWN_0x112 0x112 // SE137 *Flash Frozen*
|
||||
|
|
@ -231,14 +231,14 @@
|
|||
#define SE_UNKNOWN_0x115 0x115 // No Sound
|
||||
#define SE_UNKNOWN_0x116 0x116 // No Sound
|
||||
#define SE_UNKNOWN_0x117 0x117 // No Sound
|
||||
#define SE_UNKNOWN_0x118 0x118 // SE139 Groudon Hit (Same as 31, 114, 129, 151)
|
||||
#define SE_UNKNOWN_0x118 0x118 // *SE139 Groudon Hit (Same as 31, 114, 129, 151)
|
||||
#define SE_GROUDON_STEP 0x119 // SE140 Groudon Step
|
||||
#define SE_UNKNOWN_0x11A 0x11A // SE141 *medium power hit*
|
||||
#define SE_UNKNOWN_0x11B 0x11B // SE142 Groudon Lands
|
||||
#define SE_UNKNOWN_0x11C 0x11C // SE143 *??Lava Splash?*
|
||||
#define SE_UNKNOWN_0x11D 0x11D // SE144 Groudon Fire Ring
|
||||
#define SE_UNKNOWN_0x11B 0x11B // *SE142 Groudon Lands
|
||||
#define SE_UNKNOWN_0x11C 0x11C // *SE143 *??Lava Splash?*
|
||||
#define SE_UNKNOWN_0x11D 0x11D // *SE144 Groudon Fire Ring
|
||||
#define SE_UNKNOWN_0x11E 0x11E // SE145 *Bark?*
|
||||
#define SE_UNKNOWN_0x11F 0x11F // SE146 *Sandstorm?*
|
||||
#define SE_UNKNOWN_0x11F 0x11F // *SE146 *Sandstorm?*
|
||||
#define SE_UNKNOWN_0x120 0x120 // SE147 *Door Slam*
|
||||
#define SE_GROUDON_BOULDER_LAND 0x121 // SE148 Groudon Boulders Land/Hit
|
||||
#define SE_GROUDON_DUSTORM_LIFT 0x122 // SE149 *Ground duststorm lift*
|
||||
|
|
@ -262,18 +262,18 @@
|
|||
#define SE_UNKNOWN_0x134 0x134 // SE160 *splash?*
|
||||
#define SE_UNKNOWN_0x135 0x135 // SE161 *deeper splash*
|
||||
#define SE_UNKNOWN_0x136 0x136 // SE162 *water engulf*
|
||||
#define SE_UNKNOWN_0x137 0x137 // SE163 *Pokemon leaves ball/escape?* Same as 38
|
||||
#define SE_UNKNOWN_0x138 0x138 // SE164 *Snare brush*
|
||||
#define SE_UNKNOWN_0x139 0x139 // SE165 *Crowd cheer*
|
||||
#define SE_UNKNOWN_0x137 0x137 // *SE163 *Pokemon leaves ball/escape?* Same as 38
|
||||
#define SE_UNKNOWN_0x138 0x138 // *SE164 *Snare brush*
|
||||
#define SE_UNKNOWN_0x139 0x139 // *SE165 *Crowd cheer*
|
||||
#define SE_UNKNOWN_0x13A 0x13A // No Sound
|
||||
#define SE_UNKNOWN_0x13B 0x13B // SE166 *Traffic whistle two blast*
|
||||
#define SE_UNKNOWN_0x13C 0x13C // SE167 Hit Sealeo in bonus game *Thud*
|
||||
#define SE_UNKNOWN_0x13D 0x13D // SE168 Sealeo nose bounce in bonus game (Same as 169)
|
||||
#define SE_UNKNOWN_0x13B 0x13B // *SE166 *Traffic whistle two blast*
|
||||
#define SE_UNKNOWN_0x13C 0x13C // *SE167 Hit Sealeo in bonus game *Thud*
|
||||
#define SE_UNKNOWN_0x13D 0x13D // *SE168 Sealeo nose bounce in bonus game (Same as 169)
|
||||
#define SE_UNKNOWN_0x13E 0x13E // SE169 Sealeo nose bounce in bonus game (Same as 168)
|
||||
#define SE_UNKNOWN_0x13F 0x13F // *coin*
|
||||
#define SE_UNKNOWN_0x140 0x140 // SE170 Spheal emerges from water
|
||||
#define SE_UNKNOWN_0x141 0x141 // No Sound
|
||||
#define SE_UNKNOWN_0x142 0x142 // SE184 Pika!
|
||||
#define SE_PIKA_NO_KICKBACK 0x142 // *SE184 Pika!
|
||||
#define SE_UNKNOWN_0x143 0x143 // No Sound
|
||||
#define SE_JIRACHI_MOVE 0x144 // SE171 *Chime*
|
||||
#define SE_JIRACHI_HIT 0x145 // SE172 *Rising success whistle*
|
||||
|
|
|
|||
12
include/constants/main_board.h
Normal file
12
include/constants/main_board.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#ifndef GUARD_CONSTANTS_MAIN_BOARD_H
|
||||
#define GUARD_CONSTANTS_MAIN_BOARD_H
|
||||
|
||||
enum MainBoardTrapHoles{
|
||||
NOT_TRAPPED = 0,
|
||||
TRAP_CATCH_HOLE = 1,
|
||||
TRAP_EGG_HOLE = 2,
|
||||
TRAP_EVO_SHOP_HOLE = 3,
|
||||
TRAP_CENTER_HOLE = 4,
|
||||
};
|
||||
|
||||
#endif // GUARD_CONSTANTS_MAIN_BOARD_H
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
#ifndef GUARD_CONSTANTS_RUBY_STATES_H
|
||||
#define GUARD_CONSTANTS_RUBY_STATES_H
|
||||
#include "main_board.h"
|
||||
|
||||
enum RubyPondStates{
|
||||
RUBY_POND_STATE_CHINCHOU_STAGGERED = 0,
|
||||
|
|
|
|||
5
include/constants/sapphire_states.h
Normal file
5
include/constants/sapphire_states.h
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
#ifndef GUARD_CONSTANTS_SAPPHIRE_STATES_H
|
||||
#define GUARD_CONSTANTS_SAPPHIRE_STATES_H
|
||||
#include "main_board.h"
|
||||
|
||||
#endif //GUARD_CONSTANTS_SAPPHIRE_STATES_H
|
||||
|
|
@ -460,8 +460,8 @@ extern void DrawPikachuSpinner();
|
|||
//extern ? UpdateGulpinBossState();
|
||||
//extern ? UpdateSideBumperAnimation();
|
||||
//extern ? DrawSideBumperSprites();
|
||||
extern void UpdateCatchModeLogic();
|
||||
extern void AnimateCreatureApproach();
|
||||
extern void UpdateKickbackLogic();
|
||||
extern void PichuArrivalSequence();
|
||||
extern void ResetCatchState(s16);
|
||||
//extern ? InitCatchTrigger();
|
||||
//extern ? UpdateCatchTrigger();
|
||||
|
|
@ -470,7 +470,7 @@ extern void FullCatchStateCleanup(void);
|
|||
//extern ? UpdateBonusStageSelect();
|
||||
extern void ShowBonusTrapSprite(void);
|
||||
extern void AnimateBonusTrapSprite(void);
|
||||
extern void AnimateCatchCounterDisplay();
|
||||
extern void ProcessChargeIndicator();
|
||||
//extern ? UpdateEvolutionShopSprite();
|
||||
extern void RenderEvolutionUI(s16);
|
||||
extern void AnimateCoinReward();
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ struct PinballGame
|
|||
/*0x022*/ s8 collisionResponseType;
|
||||
/*0x023*/ u8 collisionSurfaceType; // Holds the value of some enum state
|
||||
/*0x024*/ s8 boardLayerDepth;
|
||||
/*0x025*/ s8 ballCatchState;
|
||||
/*0x025*/ s8 ballCatchState; // 0=Not caught, 1=Catch mode hole, 2=Egg Hatch Hole, 3=Evo Shop hole, 4=Center hole
|
||||
/*0x026*/ u16 collisionCooldownTimer;
|
||||
/*0x028*/ u16 modeAnimTimer;
|
||||
/*0x02A*/ u16 unk2A;
|
||||
|
|
@ -293,28 +293,28 @@ struct PinballGame
|
|||
/*0x1B8*/ s16 shopAnimSlideTimer;
|
||||
/*0x1BA*/ u16 shopEntryTimer;
|
||||
/*0x1BC*/ u16 randomSpriteVariantSeed;
|
||||
/*0x1BE*/ s8 pikaRescuePath;
|
||||
/*0x1BE*/ s8 pichuWalkMode; //1=entrance, 2=exit
|
||||
/*0x1BF*/ u8 filler1BF[0x1];
|
||||
/*0x1C0*/ u16 pikaSaverTimer;
|
||||
/*0x1C2*/ s8 outLaneSide;
|
||||
/*0x1C0*/ u16 pichuEntranceTimer;
|
||||
/*0x1C2*/ s8 outLaneSide; // 1=Left; 2=Right
|
||||
/*0x1C3*/ u8 filler1C3[0x1];
|
||||
/*0x1C4*/ u16 pikaKickbackTimer;
|
||||
/*0x1C6*/ s16 pikaChargeTarget;
|
||||
/*0x1C8*/ s16 pikaChargeProgress;
|
||||
/*0x1CA*/ s16 catchCounterValue;
|
||||
/*0x1CC*/ s16 prevCatchCounterValue;
|
||||
/*0x1CE*/ u16 pikachuAnimTimer;
|
||||
/*0x1D0*/ u16 catchCounterSlideTimer;
|
||||
/*0x1CA*/ s16 chargeFillValue;
|
||||
/*0x1CC*/ s16 prevChargeFillValue;
|
||||
/*0x1CE*/ u16 chargeFillAnimTimer;
|
||||
/*0x1D0*/ u16 fullChargeSlideAnimTimer;
|
||||
/*0x1D2*/ u16 unk1D2;
|
||||
/*0x1D4*/ u16 catchCounterXShift;
|
||||
/*0x1D6*/ u16 catchCounterSlideOffsetY;
|
||||
/*0x1D8*/ u16 catchCounterAnimState;
|
||||
/*0x1DA*/ u16 catchCounterScaleY;
|
||||
/*0x1DC*/ u16 catchCounterBlinkTimer;
|
||||
/*0x1DE*/ u16 catchAnimProgress;
|
||||
/*0x1E0*/ u16 catchAnimDuration;
|
||||
/*0x1D4*/ u16 chargeIndicatorXOffset;
|
||||
/*0x1D6*/ u16 chargeIndicatorYOffset;
|
||||
/*0x1D8*/ u16 chargeIndicatorScaleX;
|
||||
/*0x1DA*/ u16 chargeIndicatorScaleY;
|
||||
/*0x1DC*/ u16 fullChargeIndicatorBlinkTimer;
|
||||
/*0x1DE*/ u16 kickbackAnimProgress;
|
||||
/*0x1E0*/ u16 kickbackAnimDuration;
|
||||
/*0x1E2*/ s8 outLanePikaPosition; //Pikachu coverage. 0= left lane, 1=right lane, 2 = both
|
||||
/*0x1E3*/ s8 catchHoleOccupied[2];
|
||||
/*0x1E3*/ s8 kickbackOccupied[2];
|
||||
/*0x1E5*/ s8 pikachuSpinFrame;
|
||||
/*0x1E6*/ s8 pikachuSpinPrevFrame;
|
||||
/*0x1E7*/ u8 filler1E7[0x1];
|
||||
|
|
@ -329,15 +329,15 @@ struct PinballGame
|
|||
/*0x1F3*/ u8 unk1F3;
|
||||
/*0x1F4*/ s16 portraitOffsetX;
|
||||
/*0x1F6*/ s16 portraitOffsetY;
|
||||
/*0x1F8*/ s16 creatureVelX;
|
||||
/*0x1FA*/ s16 creatureVelY;
|
||||
/*0x1FC*/ s32 catchCreatureX;
|
||||
/*0x200*/ s32 catchCreatureY;
|
||||
/*0x204*/ s8 creatureWaypointIndex;
|
||||
/*0x1F8*/ s16 walkMonXVelocity;
|
||||
/*0x1FA*/ s16 walkMonYVelocity;
|
||||
/*0x1FC*/ s32 walkMonXPos; // Used for both hatch mons, and for pichu kickback walk
|
||||
/*0x200*/ s32 walkMonYPos; // Used for both hatch mons, and for pichu kickback walk
|
||||
/*0x204*/ s8 creatureWaypointIndex; // Used for both hatch mons, and for pichu kickback walk
|
||||
/*0x205*/ u8 filler205[0x1];
|
||||
/*0x206*/ u16 waypointSubTimer;
|
||||
/*0x208*/ u16 catchOverlayFrameTimer;
|
||||
/*0x20A*/ s8 catchOverlayKeyframeIndex;
|
||||
/*0x208*/ u16 kickbackAnimFrameTimer;
|
||||
/*0x20A*/ s8 kickbackFrameId;
|
||||
/*0x20B*/ s8 bonusTrapAnimFrame;
|
||||
/*0x20C*/ s8 prevBonusTrapFrame;
|
||||
/*0x20D*/ u8 filler20D[0x1];
|
||||
|
|
@ -725,10 +725,10 @@ struct PinballGame
|
|||
/*0x616*/ u16 pikaSpinCooldownTimer;
|
||||
/*0x618*/ u16 pikaSpinFrameCounter;
|
||||
/*0x61A*/ s16 pikaSpinPeriod;
|
||||
/*0x61C*/ s8 entityOverlayCollisionState;
|
||||
/*0x61C*/ s8 kickbackFiring;
|
||||
/*0x61D*/ u8 filler61D;
|
||||
/*0x61E*/ u16 catchOverlayTimer;
|
||||
/*0x620*/ struct Vector16 catchBallStartPos;
|
||||
/*0x61E*/ u16 kickbackLaunchTimer;
|
||||
/*0x620*/ struct Vector16 kickbackBallHoverPos;
|
||||
/*0x624*/ s8 bumperHitCountdown; // 2 when Hit, one frame of ignored collision, then ready to hit again
|
||||
/*0x625*/ s8 hatchTilesBumperAcknowledged;
|
||||
/*0x626*/ s8 evoItemAnimFrame;
|
||||
|
|
@ -803,8 +803,8 @@ struct PinballGame
|
|||
/*0x721*/ s8 evoCatchLightSlot1;
|
||||
/*0x722*/ s8 evoCatchLightSlot2;
|
||||
/*0x723*/ s8 evoItemCount;
|
||||
/*0x724*/ u16 modeTimeRemaining;
|
||||
/*0x726*/ s8 modeTimerDisplayIndex;
|
||||
/*0x724*/ u16 saverTimeRemaining;
|
||||
/*0x726*/ s8 saverLit;
|
||||
/*0x727*/ u8 filler727[0x1];
|
||||
/*0x728*/ s8 catchArrowPaletteActive;
|
||||
/*0x729*/ s8 evoArrowPaletteActive;
|
||||
|
|
@ -999,7 +999,7 @@ extern const u8 gBallRotationTileGraphics[][0x80];
|
|||
extern const u8 gBallShadowTileGraphics[][0x200];
|
||||
extern const u8 gMainStageBonusTrap_Gfx[][0x300];
|
||||
extern const u8 gPortraitGenericGraphics[][0x300];
|
||||
extern const u8 gCatchCounterDigitTilesGfx[][0x80];
|
||||
extern const u8 gChargeFillIndicator_Gfx[][0x80];
|
||||
extern const u8 gPikaSaverTilesGfx[];
|
||||
extern const u8 gMainBoardPikaSpinner_Gfx[][0x120];
|
||||
extern const u8 gEggFrameTilesGfx[][0x200];
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ gSongTable:: @ 0x08534E04
|
|||
song se_score_entry_a_b_move, MUSIC_PLAYER_SE2, 2
|
||||
song se_score_entry_letter_change, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_6c, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_6d, MUSIC_PLAYER_SE2, 2
|
||||
song se_dex_info_field_select_move, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_6e, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_6f, MUSIC_PLAYER_SE2, 2
|
||||
song mus_dummy, MUSIC_PLAYER_BGM, 0
|
||||
|
|
@ -124,14 +124,14 @@ gSongTable:: @ 0x08534E04
|
|||
song se_flipper_pressed, MUSIC_PLAYER_SE3, 3
|
||||
song se_slingshot_hit, MUSIC_PLAYER_SE2, 2
|
||||
song se_pokemon_catch_hit, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_75, MUSIC_PLAYER_SE2, 2
|
||||
song se_pichu_in_position_chirp, MUSIC_PLAYER_SE2, 2
|
||||
song se_trigger_button_hit, MUSIC_PLAYER_SE2, 2
|
||||
song se_wall_hit, MUSIC_PLAYER_SE3, 3
|
||||
song se_tilt_triggered, MUSIC_PLAYER_SE3, 3
|
||||
song se_unk_79, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_7a, MUSIC_PLAYER_SE2, 2
|
||||
song se_pika_spinner_clack, MUSIC_PLAYER_SE2, 2
|
||||
song se_pika_full_charge_1_up, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_7b, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_7c, MUSIC_PLAYER_SE2, 2
|
||||
song se_kickback_thunderwave, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_7d, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_7e, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_7f, MUSIC_PLAYER_SE2, 2
|
||||
|
|
@ -184,9 +184,9 @@ gSongTable:: @ 0x08534E04
|
|||
song se_pika_charge_ti, MUSIC_PLAYER_SE2, 2
|
||||
song se_pika_charge_high_do, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_b0, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_b1, MUSIC_PLAYER_SE2, 2
|
||||
song se_pikachu_kickback, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_b2, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_b3, MUSIC_PLAYER_SE2, 2
|
||||
song se_pichu_kickback, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_b4, MUSIC_PLAYER_SE2, 2
|
||||
song mus_dummy, MUSIC_PLAYER_BGM, 0
|
||||
song se_ruby_bumper_hit, MUSIC_PLAYER_SE2, 2
|
||||
|
|
@ -329,7 +329,7 @@ gSongTable:: @ 0x08534E04
|
|||
song se_unk_13f, MUSIC_PLAYER_SE2, 2
|
||||
song se_unk_140, MUSIC_PLAYER_SE2, 2
|
||||
song mus_dummy, MUSIC_PLAYER_BGM, 0
|
||||
song se_unk_142, MUSIC_PLAYER_SE2, 2
|
||||
song se_pika_no_kickback, MUSIC_PLAYER_SE2, 2
|
||||
song mus_dummy, MUSIC_PLAYER_BGM, 0
|
||||
song se_jirachi_move, MUSIC_PLAYER_SE2, 2
|
||||
song se_jirachi_hit, MUSIC_PLAYER_SE2, 2
|
||||
|
|
|
|||
40
sound/songs/se_dex_info_field_select_move.s
Normal file
40
sound/songs/se_dex_info_field_select_move.s
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_dex_info_field_select_move_grp, gUnknown_08532310
|
||||
.equ se_dex_info_field_select_move_pri, 5
|
||||
.equ se_dex_info_field_select_move_rev, reverb_set+50
|
||||
.equ se_dex_info_field_select_move_mvl, 127
|
||||
.equ se_dex_info_field_select_move_key, 0
|
||||
.equ se_dex_info_field_select_move_tbs, 1
|
||||
.equ se_dex_info_field_select_move_exg, 0
|
||||
.equ se_dex_info_field_select_move_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_dex_info_field_select_move
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_dex_info_field_select_move_0: @ 0x0869EFF8
|
||||
.byte KEYSH , se_dex_info_field_select_move_key+0
|
||||
.byte TEMPO , 150*se_dex_info_field_select_move_tbs/2
|
||||
.byte VOICE , 4
|
||||
.byte VOL , 100*se_dex_info_field_select_move_mvl/mxv
|
||||
.byte N04 , Fs4 , v127
|
||||
.byte W06
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_dex_info_field_select_move: @ 0x0869F008
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_dex_info_field_select_move_pri @ Priority
|
||||
.byte se_dex_info_field_select_move_rev @ Reverb
|
||||
|
||||
.word se_dex_info_field_select_move_grp
|
||||
|
||||
.word se_dex_info_field_select_move_0
|
||||
@ 0x0869F014
|
||||
61
sound/songs/se_kickback_thunderwave.s
Normal file
61
sound/songs/se_kickback_thunderwave.s
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_kickback_thunderwave_grp, gUnknown_08531D4C
|
||||
.equ se_kickback_thunderwave_pri, 5
|
||||
.equ se_kickback_thunderwave_rev, reverb_set+50
|
||||
.equ se_kickback_thunderwave_mvl, 127
|
||||
.equ se_kickback_thunderwave_key, 0
|
||||
.equ se_kickback_thunderwave_tbs, 1
|
||||
.equ se_kickback_thunderwave_exg, 0
|
||||
.equ se_kickback_thunderwave_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_kickback_thunderwave
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_kickback_thunderwave_0: @ 0x0869F2D4
|
||||
.byte KEYSH , se_kickback_thunderwave_key+0
|
||||
.byte TEMPO , 150*se_kickback_thunderwave_tbs/2
|
||||
.byte VOICE , 38
|
||||
.byte BENDR , 2
|
||||
.byte VOL , 100*se_kickback_thunderwave_mvl/mxv
|
||||
.byte BEND , c_v+0
|
||||
.byte TIE , Fs4 , v080
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte EOT
|
||||
.byte FINE
|
||||
|
||||
@*********************** Track 02 ***********************@
|
||||
|
||||
se_kickback_thunderwave_1: @ 0x0869F2E9
|
||||
.byte KEYSH , se_kickback_thunderwave_key+0
|
||||
.byte VOICE , 27
|
||||
.byte VOL , 100*se_kickback_thunderwave_mvl/mxv
|
||||
.byte TIE , Fn3 , v032
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte EOT
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_kickback_thunderwave: @ 0x0869F2F8
|
||||
.byte 2 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_kickback_thunderwave_pri @ Priority
|
||||
.byte se_kickback_thunderwave_rev @ Reverb
|
||||
|
||||
.word se_kickback_thunderwave_grp
|
||||
|
||||
.word se_kickback_thunderwave_0
|
||||
.word se_kickback_thunderwave_1
|
||||
@ 0x0869F308
|
||||
43
sound/songs/se_pichu_in_position_chirp.s
Normal file
43
sound/songs/se_pichu_in_position_chirp.s
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_pichu_in_position_chirp_grp, gUnknown_08532310
|
||||
.equ se_pichu_in_position_chirp_pri, 5
|
||||
.equ se_pichu_in_position_chirp_rev, reverb_set+50
|
||||
.equ se_pichu_in_position_chirp_mvl, 127
|
||||
.equ se_pichu_in_position_chirp_key, 0
|
||||
.equ se_pichu_in_position_chirp_tbs, 1
|
||||
.equ se_pichu_in_position_chirp_exg, 0
|
||||
.equ se_pichu_in_position_chirp_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_pichu_in_position_chirp
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_pichu_in_position_chirp_0: @ 0x0869F18C
|
||||
.byte KEYSH , se_pichu_in_position_chirp_key+0
|
||||
.byte TEMPO , 150*se_pichu_in_position_chirp_tbs/2
|
||||
.byte VOL , 90*se_pichu_in_position_chirp_mvl/mxv
|
||||
.byte PAN , c_v+0
|
||||
.byte VOICE , 23
|
||||
.byte N02 , Fn6 , v127
|
||||
.byte W02
|
||||
.byte N02 , Fn7 , v127
|
||||
.byte W02
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_pichu_in_position_chirp: @ 0x0869F1A0
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_pichu_in_position_chirp_pri @ Priority
|
||||
.byte se_pichu_in_position_chirp_rev @ Reverb
|
||||
|
||||
.word se_pichu_in_position_chirp_grp
|
||||
|
||||
.word se_pichu_in_position_chirp_0
|
||||
@ 0x0869F1AC
|
||||
43
sound/songs/se_pichu_kickback.s
Normal file
43
sound/songs/se_pichu_kickback.s
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_pichu_kickback_grp, gUnknown_08532310
|
||||
.equ se_pichu_kickback_pri, 5
|
||||
.equ se_pichu_kickback_rev, reverb_set+50
|
||||
.equ se_pichu_kickback_mvl, 127
|
||||
.equ se_pichu_kickback_key, 0
|
||||
.equ se_pichu_kickback_tbs, 1
|
||||
.equ se_pichu_kickback_exg, 0
|
||||
.equ se_pichu_kickback_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_pichu_kickback
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_pichu_kickback_0: @ 0x086A0354
|
||||
.byte KEYSH , se_pichu_kickback_key+0
|
||||
.byte TEMPO , 150*se_pichu_kickback_tbs/2
|
||||
.byte VOL , 127*se_pichu_kickback_mvl/mxv
|
||||
.byte PAN , c_v+0
|
||||
.byte VOICE , 105
|
||||
.byte TIE , Cn3 , v127
|
||||
.byte W96
|
||||
.byte W96
|
||||
.byte EOT
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_pichu_kickback: @ 0x086A0368
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_pichu_kickback_pri @ Priority
|
||||
.byte se_pichu_kickback_rev @ Reverb
|
||||
|
||||
.word se_pichu_kickback_grp
|
||||
|
||||
.word se_pichu_kickback_0
|
||||
@ 0x086A0374
|
||||
|
|
@ -1,24 +1,24 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_unk_7a_grp, gUnknown_08532310
|
||||
.equ se_unk_7a_pri, 5
|
||||
.equ se_unk_7a_rev, reverb_set+50
|
||||
.equ se_unk_7a_mvl, 127
|
||||
.equ se_unk_7a_key, 0
|
||||
.equ se_unk_7a_tbs, 1
|
||||
.equ se_unk_7a_exg, 0
|
||||
.equ se_unk_7a_cmp, 1
|
||||
.equ se_pika_full_charge_1_up_grp, gUnknown_08532310
|
||||
.equ se_pika_full_charge_1_up_pri, 5
|
||||
.equ se_pika_full_charge_1_up_rev, reverb_set+50
|
||||
.equ se_pika_full_charge_1_up_mvl, 127
|
||||
.equ se_pika_full_charge_1_up_key, 0
|
||||
.equ se_pika_full_charge_1_up_tbs, 1
|
||||
.equ se_pika_full_charge_1_up_exg, 0
|
||||
.equ se_pika_full_charge_1_up_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_unk_7a
|
||||
.global se_pika_full_charge_1_up
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_unk_7a_0: @ 0x0869F24C
|
||||
.byte KEYSH , se_unk_7a_key+0
|
||||
.byte TEMPO , 150*se_unk_7a_tbs/2
|
||||
.byte VOL , 80*se_unk_7a_mvl/mxv
|
||||
se_pika_full_charge_1_up_0: @ 0x0869F24C
|
||||
.byte KEYSH , se_pika_full_charge_1_up_key+0
|
||||
.byte TEMPO , 150*se_pika_full_charge_1_up_tbs/2
|
||||
.byte VOL , 80*se_pika_full_charge_1_up_mvl/mxv
|
||||
.byte PAN , c_v+0
|
||||
.byte VOICE , 12
|
||||
.byte N03 , An5 , v127
|
||||
|
|
@ -63,13 +63,13 @@ se_unk_7a_0: @ 0x0869F24C
|
|||
|
||||
.align 2
|
||||
|
||||
se_unk_7a: @ 0x0869F2A0
|
||||
se_pika_full_charge_1_up: @ 0x0869F2A0
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_unk_7a_pri @ Priority
|
||||
.byte se_unk_7a_rev @ Reverb
|
||||
.byte se_pika_full_charge_1_up_pri @ Priority
|
||||
.byte se_pika_full_charge_1_up_rev @ Reverb
|
||||
|
||||
.word se_unk_7a_grp
|
||||
.word se_pika_full_charge_1_up_grp
|
||||
|
||||
.word se_unk_7a_0
|
||||
.word se_pika_full_charge_1_up_0
|
||||
@ 0x0869F2AC
|
||||
42
sound/songs/se_pika_no_kickback.s
Normal file
42
sound/songs/se_pika_no_kickback.s
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_pika_no_kickback_grp, gUnknown_08532310
|
||||
.equ se_pika_no_kickback_pri, 5
|
||||
.equ se_pika_no_kickback_rev, reverb_set+50
|
||||
.equ se_pika_no_kickback_mvl, 127
|
||||
.equ se_pika_no_kickback_key, 0
|
||||
.equ se_pika_no_kickback_tbs, 1
|
||||
.equ se_pika_no_kickback_exg, 0
|
||||
.equ se_pika_no_kickback_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_pika_no_kickback
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_pika_no_kickback_0: @ 0x086A2F90
|
||||
.byte KEYSH , se_pika_no_kickback_key+0
|
||||
.byte TEMPO , 150*se_pika_no_kickback_tbs/2
|
||||
.byte VOL , 127*se_pika_no_kickback_mvl/mxv
|
||||
.byte PAN , c_v+0
|
||||
.byte VOICE , 102
|
||||
.byte TIE , Cn3 , v127
|
||||
.byte W48
|
||||
.byte EOT
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_pika_no_kickback: @ 0x086A2FA0
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_pika_no_kickback_pri @ Priority
|
||||
.byte se_pika_no_kickback_rev @ Reverb
|
||||
|
||||
.word se_pika_no_kickback_grp
|
||||
|
||||
.word se_pika_no_kickback_0
|
||||
@ 0x086A2FAC
|
||||
46
sound/songs/se_pika_spinner_clack.s
Normal file
46
sound/songs/se_pika_spinner_clack.s
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_pika_spinner_clack_grp, gUnknown_08531D4C
|
||||
.equ se_pika_spinner_clack_pri, 5
|
||||
.equ se_pika_spinner_clack_rev, reverb_set+50
|
||||
.equ se_pika_spinner_clack_mvl, 127
|
||||
.equ se_pika_spinner_clack_key, 0
|
||||
.equ se_pika_spinner_clack_tbs, 1
|
||||
.equ se_pika_spinner_clack_exg, 0
|
||||
.equ se_pika_spinner_clack_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_pika_spinner_clack
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_pika_spinner_clack_0: @ 0x0869F228
|
||||
.byte KEYSH , se_pika_spinner_clack_key+0
|
||||
.byte TEMPO , 150*se_pika_spinner_clack_tbs/2
|
||||
.byte VOICE , 26
|
||||
.byte BENDR , 12
|
||||
.byte PAN , c_v+0
|
||||
.byte VOL , 95*se_pika_spinner_clack_mvl/mxv
|
||||
.byte BEND , c_v+0
|
||||
.byte N01 , Cn3 , v127
|
||||
.byte W03
|
||||
.byte W03
|
||||
.byte Gn3
|
||||
.byte W03
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_pika_spinner_clack: @ 0x0869F240
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_pika_spinner_clack_pri @ Priority
|
||||
.byte se_pika_spinner_clack_rev @ Reverb
|
||||
|
||||
.word se_pika_spinner_clack_grp
|
||||
|
||||
.word se_pika_spinner_clack_0
|
||||
@ 0x0869F24C
|
||||
43
sound/songs/se_pikachu_kickback.s
Normal file
43
sound/songs/se_pikachu_kickback.s
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_pikachu_kickback_grp, gUnknown_08532310
|
||||
.equ se_pikachu_kickback_pri, 5
|
||||
.equ se_pikachu_kickback_rev, reverb_set+50
|
||||
.equ se_pikachu_kickback_mvl, 127
|
||||
.equ se_pikachu_kickback_key, 0
|
||||
.equ se_pikachu_kickback_tbs, 1
|
||||
.equ se_pikachu_kickback_exg, 0
|
||||
.equ se_pikachu_kickback_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_pikachu_kickback
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_pikachu_kickback_0: @ 0x086A0314
|
||||
.byte KEYSH , se_pikachu_kickback_key+0
|
||||
.byte TEMPO , 150*se_pikachu_kickback_tbs/2
|
||||
.byte VOL , 127*se_pikachu_kickback_mvl/mxv
|
||||
.byte PAN , c_v+0
|
||||
.byte VOICE , 101
|
||||
.byte TIE , Cn3 , v127
|
||||
.byte W96
|
||||
.byte W96
|
||||
.byte EOT
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_pikachu_kickback: @ 0x086A0328
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_pikachu_kickback_pri @ Priority
|
||||
.byte se_pikachu_kickback_rev @ Reverb
|
||||
|
||||
.word se_pikachu_kickback_grp
|
||||
|
||||
.word se_pikachu_kickback_0
|
||||
@ 0x086A0334
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_unk_142_grp, gUnknown_08532310
|
||||
.equ se_unk_142_pri, 5
|
||||
.equ se_unk_142_rev, reverb_set+50
|
||||
.equ se_unk_142_mvl, 127
|
||||
.equ se_unk_142_key, 0
|
||||
.equ se_unk_142_tbs, 1
|
||||
.equ se_unk_142_exg, 0
|
||||
.equ se_unk_142_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_unk_142
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_unk_142_0: @ 0x086A2F90
|
||||
.byte KEYSH , se_unk_142_key+0
|
||||
.byte TEMPO , 150*se_unk_142_tbs/2
|
||||
.byte VOL , 127*se_unk_142_mvl/mxv
|
||||
.byte PAN , c_v+0
|
||||
.byte VOICE , 102
|
||||
.byte TIE , Cn3 , v127
|
||||
.byte W48
|
||||
.byte EOT
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_unk_142: @ 0x086A2FA0
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_unk_142_pri @ Priority
|
||||
.byte se_unk_142_rev @ Reverb
|
||||
|
||||
.word se_unk_142_grp
|
||||
|
||||
.word se_unk_142_0
|
||||
@ 0x086A2FAC
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_unk_6d_grp, gUnknown_08532310
|
||||
.equ se_unk_6d_pri, 5
|
||||
.equ se_unk_6d_rev, reverb_set+50
|
||||
.equ se_unk_6d_mvl, 127
|
||||
.equ se_unk_6d_key, 0
|
||||
.equ se_unk_6d_tbs, 1
|
||||
.equ se_unk_6d_exg, 0
|
||||
.equ se_unk_6d_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_unk_6d
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_unk_6d_0: @ 0x0869EFF8
|
||||
.byte KEYSH , se_unk_6d_key+0
|
||||
.byte TEMPO , 150*se_unk_6d_tbs/2
|
||||
.byte VOICE , 4
|
||||
.byte VOL , 100*se_unk_6d_mvl/mxv
|
||||
.byte N04 , Fs4 , v127
|
||||
.byte W06
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_unk_6d: @ 0x0869F008
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_unk_6d_pri @ Priority
|
||||
.byte se_unk_6d_rev @ Reverb
|
||||
|
||||
.word se_unk_6d_grp
|
||||
|
||||
.word se_unk_6d_0
|
||||
@ 0x0869F014
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_unk_75_grp, gUnknown_08532310
|
||||
.equ se_unk_75_pri, 5
|
||||
.equ se_unk_75_rev, reverb_set+50
|
||||
.equ se_unk_75_mvl, 127
|
||||
.equ se_unk_75_key, 0
|
||||
.equ se_unk_75_tbs, 1
|
||||
.equ se_unk_75_exg, 0
|
||||
.equ se_unk_75_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_unk_75
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_unk_75_0: @ 0x0869F18C
|
||||
.byte KEYSH , se_unk_75_key+0
|
||||
.byte TEMPO , 150*se_unk_75_tbs/2
|
||||
.byte VOL , 90*se_unk_75_mvl/mxv
|
||||
.byte PAN , c_v+0
|
||||
.byte VOICE , 23
|
||||
.byte N02 , Fn6 , v127
|
||||
.byte W02
|
||||
.byte N02 , Fn7 , v127
|
||||
.byte W02
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_unk_75: @ 0x0869F1A0
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_unk_75_pri @ Priority
|
||||
.byte se_unk_75_rev @ Reverb
|
||||
|
||||
.word se_unk_75_grp
|
||||
|
||||
.word se_unk_75_0
|
||||
@ 0x0869F1AC
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_unk_79_grp, gUnknown_08531D4C
|
||||
.equ se_unk_79_pri, 5
|
||||
.equ se_unk_79_rev, reverb_set+50
|
||||
.equ se_unk_79_mvl, 127
|
||||
.equ se_unk_79_key, 0
|
||||
.equ se_unk_79_tbs, 1
|
||||
.equ se_unk_79_exg, 0
|
||||
.equ se_unk_79_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_unk_79
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_unk_79_0: @ 0x0869F228
|
||||
.byte KEYSH , se_unk_79_key+0
|
||||
.byte TEMPO , 150*se_unk_79_tbs/2
|
||||
.byte VOICE , 26
|
||||
.byte BENDR , 12
|
||||
.byte PAN , c_v+0
|
||||
.byte VOL , 95*se_unk_79_mvl/mxv
|
||||
.byte BEND , c_v+0
|
||||
.byte N01 , Cn3 , v127
|
||||
.byte W03
|
||||
.byte W03
|
||||
.byte Gn3
|
||||
.byte W03
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_unk_79: @ 0x0869F240
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_unk_79_pri @ Priority
|
||||
.byte se_unk_79_rev @ Reverb
|
||||
|
||||
.word se_unk_79_grp
|
||||
|
||||
.word se_unk_79_0
|
||||
@ 0x0869F24C
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_unk_7c_grp, gUnknown_08531D4C
|
||||
.equ se_unk_7c_pri, 5
|
||||
.equ se_unk_7c_rev, reverb_set+50
|
||||
.equ se_unk_7c_mvl, 127
|
||||
.equ se_unk_7c_key, 0
|
||||
.equ se_unk_7c_tbs, 1
|
||||
.equ se_unk_7c_exg, 0
|
||||
.equ se_unk_7c_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_unk_7c
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_unk_7c_0: @ 0x0869F2D4
|
||||
.byte KEYSH , se_unk_7c_key+0
|
||||
.byte TEMPO , 150*se_unk_7c_tbs/2
|
||||
.byte VOICE , 38
|
||||
.byte BENDR , 2
|
||||
.byte VOL , 100*se_unk_7c_mvl/mxv
|
||||
.byte BEND , c_v+0
|
||||
.byte TIE , Fs4 , v080
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte EOT
|
||||
.byte FINE
|
||||
|
||||
@*********************** Track 02 ***********************@
|
||||
|
||||
se_unk_7c_1: @ 0x0869F2E9
|
||||
.byte KEYSH , se_unk_7c_key+0
|
||||
.byte VOICE , 27
|
||||
.byte VOL , 100*se_unk_7c_mvl/mxv
|
||||
.byte TIE , Fn3 , v032
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte W24
|
||||
.byte EOT
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_unk_7c: @ 0x0869F2F8
|
||||
.byte 2 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_unk_7c_pri @ Priority
|
||||
.byte se_unk_7c_rev @ Reverb
|
||||
|
||||
.word se_unk_7c_grp
|
||||
|
||||
.word se_unk_7c_0
|
||||
.word se_unk_7c_1
|
||||
@ 0x0869F308
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_unk_b1_grp, gUnknown_08532310
|
||||
.equ se_unk_b1_pri, 5
|
||||
.equ se_unk_b1_rev, reverb_set+50
|
||||
.equ se_unk_b1_mvl, 127
|
||||
.equ se_unk_b1_key, 0
|
||||
.equ se_unk_b1_tbs, 1
|
||||
.equ se_unk_b1_exg, 0
|
||||
.equ se_unk_b1_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_unk_b1
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_unk_b1_0: @ 0x086A0314
|
||||
.byte KEYSH , se_unk_b1_key+0
|
||||
.byte TEMPO , 150*se_unk_b1_tbs/2
|
||||
.byte VOL , 127*se_unk_b1_mvl/mxv
|
||||
.byte PAN , c_v+0
|
||||
.byte VOICE , 101
|
||||
.byte TIE , Cn3 , v127
|
||||
.byte W96
|
||||
.byte W96
|
||||
.byte EOT
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_unk_b1: @ 0x086A0328
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_unk_b1_pri @ Priority
|
||||
.byte se_unk_b1_rev @ Reverb
|
||||
|
||||
.word se_unk_b1_grp
|
||||
|
||||
.word se_unk_b1_0
|
||||
@ 0x086A0334
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
.include "sound/MPlayDef.s"
|
||||
|
||||
.equ se_unk_b3_grp, gUnknown_08532310
|
||||
.equ se_unk_b3_pri, 5
|
||||
.equ se_unk_b3_rev, reverb_set+50
|
||||
.equ se_unk_b3_mvl, 127
|
||||
.equ se_unk_b3_key, 0
|
||||
.equ se_unk_b3_tbs, 1
|
||||
.equ se_unk_b3_exg, 0
|
||||
.equ se_unk_b3_cmp, 1
|
||||
|
||||
.section .rodata
|
||||
.global se_unk_b3
|
||||
.align 2
|
||||
|
||||
@*********************** Track 01 ***********************@
|
||||
|
||||
se_unk_b3_0: @ 0x086A0354
|
||||
.byte KEYSH , se_unk_b3_key+0
|
||||
.byte TEMPO , 150*se_unk_b3_tbs/2
|
||||
.byte VOL , 127*se_unk_b3_mvl/mxv
|
||||
.byte PAN , c_v+0
|
||||
.byte VOICE , 105
|
||||
.byte TIE , Cn3 , v127
|
||||
.byte W96
|
||||
.byte W96
|
||||
.byte EOT
|
||||
.byte FINE
|
||||
|
||||
@******************************************************@
|
||||
|
||||
.align 2
|
||||
|
||||
se_unk_b3: @ 0x086A0368
|
||||
.byte 1 @ NumTrks
|
||||
.byte 0 @ NumBlks
|
||||
.byte se_unk_b3_pri @ Priority
|
||||
.byte se_unk_b3_rev @ Reverb
|
||||
|
||||
.word se_unk_b3_grp
|
||||
|
||||
.word se_unk_b3_0
|
||||
@ 0x086A0374
|
||||
|
|
@ -292,7 +292,7 @@ void ProcessTiltInput(void)
|
|||
int i;
|
||||
s16 sp0[4];
|
||||
|
||||
if (gCurrentPinballGame->ballCatchState == 0 && gCurrentPinballGame->captureState != 2 && gCurrentPinballGame->entityOverlayCollisionState == 0)
|
||||
if (gCurrentPinballGame->ballCatchState == NOT_TRAPPED && gCurrentPinballGame->captureState != 2 && gCurrentPinballGame->kickbackFiring == 0)
|
||||
{
|
||||
if (gCurrentPinballGame->newButtonActions[2])
|
||||
{
|
||||
|
|
@ -452,7 +452,7 @@ void ProcessMainBoardBallDrainAndLaunch(void)
|
|||
gCurrentPinballGame->ball->velocity.y = 0;
|
||||
if (gMain.modeChangeDelayTimer == 0)
|
||||
{
|
||||
if (gCurrentPinballGame->modeTimeRemaining)
|
||||
if (gCurrentPinballGame->saverTimeRemaining)
|
||||
{
|
||||
gMain.modeChangeDelayTimer = 4;
|
||||
gMain.pendingModeChangeType = 8;
|
||||
|
|
@ -468,8 +468,8 @@ void ProcessMainBoardBallDrainAndLaunch(void)
|
|||
ResetBoardStateOnDeath();
|
||||
if (gCurrentPinballGame->outLanePikaPosition == 2 && gMain.eReaderBonuses[EREADER_DX_MODE_CARD] == 0)
|
||||
{
|
||||
gCurrentPinballGame->pikaRescuePath = 2;
|
||||
gCurrentPinballGame->pikaSaverTimer = 800;
|
||||
gCurrentPinballGame->pichuWalkMode = 2;
|
||||
gCurrentPinballGame->pichuEntranceTimer = 800;
|
||||
gCurrentPinballGame->outLanePikaPosition = 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -538,20 +538,20 @@ void ResetBoardStateOnDeath(void)
|
|||
gCurrentPinballGame->holeIndicators[2] = gCurrentPinballGame->holeIndicators[0];
|
||||
gCurrentPinballGame->holeIndicators[3] = gCurrentPinballGame->holeIndicators[0];
|
||||
gCurrentPinballGame->pikaSpinMomentum = 0;
|
||||
gCurrentPinballGame->catchOverlayFrameTimer = 0;
|
||||
gCurrentPinballGame->catchOverlayKeyframeIndex = 0;
|
||||
gCurrentPinballGame->kickbackAnimFrameTimer = 0;
|
||||
gCurrentPinballGame->kickbackFrameId = 0;
|
||||
if (gCurrentPinballGame->outLanePikaPosition != 2 || !gMain.eReaderBonuses[EREADER_DX_MODE_CARD])
|
||||
{
|
||||
gCurrentPinballGame->pikaChargeTarget = 0;
|
||||
gCurrentPinballGame->pikaChargeProgress = 0;
|
||||
gCurrentPinballGame->prevCatchCounterValue = 0;
|
||||
gCurrentPinballGame->catchCounterValue = 0;
|
||||
gCurrentPinballGame->catchCounterXShift = 0;
|
||||
gCurrentPinballGame->catchCounterSlideOffsetY = -4;
|
||||
gCurrentPinballGame->catchCounterAnimState = 0x100;
|
||||
gCurrentPinballGame->catchCounterScaleY = 0x100;
|
||||
gCurrentPinballGame->pikachuAnimTimer = 0;
|
||||
gCurrentPinballGame->catchCounterSlideTimer = 0;
|
||||
gCurrentPinballGame->prevChargeFillValue = 0;
|
||||
gCurrentPinballGame->chargeFillValue = 0;
|
||||
gCurrentPinballGame->chargeIndicatorXOffset = 0;
|
||||
gCurrentPinballGame->chargeIndicatorYOffset = -4;
|
||||
gCurrentPinballGame->chargeIndicatorScaleX = 0x100;
|
||||
gCurrentPinballGame->chargeIndicatorScaleY = 0x100;
|
||||
gCurrentPinballGame->chargeFillAnimTimer = 0;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer = 0;
|
||||
}
|
||||
|
||||
gCurrentPinballGame->ballPowerUpLight[0] = 0;
|
||||
|
|
|
|||
|
|
@ -58,11 +58,11 @@ void RubyBoardProcess_3A_19A20(void)
|
|||
gCurrentPinballGame->pikachuSpinFrame = 0;
|
||||
gCurrentPinballGame->pikachuSpinPrevFrame = 1;
|
||||
UpdatePikachuChargeCounter();
|
||||
AnimateCatchCounterDisplay();
|
||||
ProcessChargeIndicator();
|
||||
DrawPikachuSpinner();
|
||||
|
||||
gCurrentPinballGame->catchCounterAnimState = 256;
|
||||
gCurrentPinballGame->catchCounterScaleY = 256;
|
||||
gCurrentPinballGame->chargeIndicatorScaleX = 256;
|
||||
gCurrentPinballGame->chargeIndicatorScaleY = 256;
|
||||
gCurrentPinballGame->rampPrizeType = 2;
|
||||
DrawRubyNuzleafPlatformSprite();
|
||||
|
||||
|
|
@ -277,8 +277,8 @@ void UpdateRubyBoardEntityRendering(void)
|
|||
{
|
||||
DrawSpoinkSprite();
|
||||
}
|
||||
UpdateCatchModeLogic();
|
||||
AnimateCatchCounterDisplay();
|
||||
UpdateKickbackLogic();
|
||||
ProcessChargeIndicator();
|
||||
UpdateRubyBoardAnimations();
|
||||
UpdatePortraitSpritePositions();
|
||||
UpdateEvolutionShopSprite();
|
||||
|
|
@ -320,7 +320,7 @@ void HandleRubyFlipperButtonInput(void)
|
|||
if (gCurrentPinballGame->newButtonActions[0])
|
||||
{
|
||||
if (gCurrentPinballGame->pikaKickbackTimer == 0 && gCurrentPinballGame->outLanePikaPosition != 2 &&
|
||||
gCurrentPinballGame->pikaSaverTimer == 0 && gCurrentPinballGame->entityOverlayCollisionState == 0)
|
||||
gCurrentPinballGame->pichuEntranceTimer == 0 && gCurrentPinballGame->kickbackFiring == 0)
|
||||
{
|
||||
gCurrentPinballGame->outLanePikaPosition = 0;
|
||||
}
|
||||
|
|
@ -340,7 +340,7 @@ void HandleRubyFlipperButtonInput(void)
|
|||
if (gCurrentPinballGame->newButtonActions[1])
|
||||
{
|
||||
if (gCurrentPinballGame->pikaKickbackTimer == 0 && gCurrentPinballGame->outLanePikaPosition != 2 &&
|
||||
gCurrentPinballGame->pikaSaverTimer == 0 && gCurrentPinballGame->entityOverlayCollisionState == 0)
|
||||
gCurrentPinballGame->pichuEntranceTimer == 0 && gCurrentPinballGame->kickbackFiring == 0)
|
||||
{
|
||||
gCurrentPinballGame->outLanePikaPosition = 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
#include "m4a.h"
|
||||
#include "main.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/sapphire_states.h"
|
||||
|
||||
//#include "constants/pinball_game.h"
|
||||
|
||||
extern void HandleSapphireFlipperButtonInput(void);
|
||||
|
|
@ -14,13 +16,13 @@ void SapphireBoardProcess_3A_326F4(void)
|
|||
gCurrentPinballGame->pikachuSpinPrevFrame = 1;
|
||||
|
||||
UpdatePikachuChargeCounter();
|
||||
AnimateCatchCounterDisplay();
|
||||
ProcessChargeIndicator();
|
||||
DrawPikachuSpinner();
|
||||
CalculateRubyBumperBounce();
|
||||
HandleRubyBumperHit();
|
||||
|
||||
gCurrentPinballGame->catchCounterAnimState = 0x100;
|
||||
gCurrentPinballGame->catchCounterScaleY = 0x100;
|
||||
gCurrentPinballGame->chargeIndicatorScaleX = 0x100;
|
||||
gCurrentPinballGame->chargeIndicatorScaleY = 0x100;
|
||||
|
||||
InitSapphireEggCaveState();
|
||||
UpdateSapphireEggCaveAnimation();
|
||||
|
|
@ -110,8 +112,8 @@ void UpdateSapphireBoardEntityRendering(void)
|
|||
if (0xA8 < gCurrentPinballGame->cameraYViewport)
|
||||
DrawSpoinkSprite();
|
||||
|
||||
UpdateCatchModeLogic();
|
||||
AnimateCatchCounterDisplay();
|
||||
UpdateKickbackLogic();
|
||||
ProcessChargeIndicator();
|
||||
UpdatePortraitSpritePositions();
|
||||
DrawBoardEdgeBanner();
|
||||
|
||||
|
|
@ -145,13 +147,13 @@ void DispatchSapphireCatchModeInit(void)
|
|||
|
||||
switch (gCurrentPinballGame->ballCatchState)
|
||||
{
|
||||
case 1:
|
||||
case TRAP_CATCH_HOLE:
|
||||
InitSapphireWailmerCatch();
|
||||
break;
|
||||
case 3:
|
||||
case TRAP_EVO_SHOP_HOLE:
|
||||
InitSapphireEvolutionShopCatch();
|
||||
break;
|
||||
case 4:
|
||||
case TRAP_CENTER_HOLE:
|
||||
InitCenterTrapMode();
|
||||
break;
|
||||
}
|
||||
|
|
@ -166,13 +168,13 @@ void UpdateSapphireCatchModeAnimation(void)
|
|||
|
||||
switch (gCurrentPinballGame->ballCatchState)
|
||||
{
|
||||
case 1:
|
||||
case TRAP_CATCH_HOLE:
|
||||
UpdateSapphireWailmerCatchSequence();
|
||||
break;
|
||||
case 3:
|
||||
case TRAP_EVO_SHOP_HOLE:
|
||||
UpdateSapphireEvolutionShopSequence();
|
||||
break;
|
||||
case 4:
|
||||
case TRAP_CENTER_HOLE:
|
||||
AnimateCenterTrapSequence(); //Center Hole
|
||||
break;
|
||||
}
|
||||
|
|
@ -240,7 +242,7 @@ void UpdateSapphireEvolutionShopSequence(void)
|
|||
gCurrentPinballGame->ballUpgradeTimerFrozen = 0;
|
||||
gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2;
|
||||
gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2;
|
||||
gCurrentPinballGame->ballCatchState = 0;
|
||||
gCurrentPinballGame->ballCatchState = NOT_TRAPPED;
|
||||
|
||||
m4aSongNumStart(SE_UNKNOWN_0xC3);
|
||||
|
||||
|
|
@ -352,7 +354,7 @@ void UpdateSapphireWailmerCatchSequence(void)
|
|||
gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2;
|
||||
gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2;
|
||||
gCurrentPinballGame->ball->prevPositionQ1 = gCurrentPinballGame->ball->positionQ1;
|
||||
gCurrentPinballGame->ballCatchState = 0;
|
||||
gCurrentPinballGame->ballCatchState = NOT_TRAPPED;
|
||||
gCurrentPinballGame->ballUpgradeTimerFrozen = 0;
|
||||
m4aSongNumStart(SE_WHISCASH_SPIT_BALL);
|
||||
gCurrentPinballGame->cameraScrollTarget = 0;
|
||||
|
|
@ -368,7 +370,7 @@ void HandleSapphireFlipperButtonInput(void)
|
|||
if (gCurrentPinballGame->newButtonActions[0])
|
||||
{
|
||||
if (gCurrentPinballGame->pikaKickbackTimer == 0 && gCurrentPinballGame->outLanePikaPosition != 2 &&
|
||||
gCurrentPinballGame->pikaSaverTimer == 0 && gCurrentPinballGame->entityOverlayCollisionState == 0)
|
||||
gCurrentPinballGame->pichuEntranceTimer == 0 && gCurrentPinballGame->kickbackFiring == 0)
|
||||
{
|
||||
gCurrentPinballGame->outLanePikaPosition = 0;
|
||||
}
|
||||
|
|
@ -388,7 +390,7 @@ void HandleSapphireFlipperButtonInput(void)
|
|||
if (gCurrentPinballGame->newButtonActions[1])
|
||||
{
|
||||
if (gCurrentPinballGame->pikaKickbackTimer == 0 && gCurrentPinballGame->outLanePikaPosition != 2 &&
|
||||
gCurrentPinballGame->pikaSaverTimer == 0 && gCurrentPinballGame->entityOverlayCollisionState == 0)
|
||||
gCurrentPinballGame->pichuEntranceTimer == 0 && gCurrentPinballGame->kickbackFiring == 0)
|
||||
{
|
||||
gCurrentPinballGame->outLanePikaPosition = 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "main.h"
|
||||
#include "m4a.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/main_board.h"
|
||||
|
||||
void AllBoardProcess_4A_19304(void)
|
||||
{
|
||||
|
|
@ -99,7 +100,7 @@ void UpdateMainBoardFlipperPhysics(void)
|
|||
|
||||
if (gCurrentPinballGame->heldButtonActions[i])
|
||||
{
|
||||
if (flipper->active == 0 && gCurrentPinballGame->ballCatchState == 0)
|
||||
if (flipper->active == 0 && gCurrentPinballGame->ballCatchState == NOT_TRAPPED)
|
||||
m4aSongNumStart(SE_FLIPPER_PRESSED);
|
||||
|
||||
flipper->active = 1;
|
||||
|
|
@ -214,7 +215,9 @@ void UpdateBonusBoardFlipperPhysics(void)
|
|||
|
||||
if (gCurrentPinballGame->heldButtonActions[i] && gMain.modeChangeFlags == MODE_CHANGE_NONE)
|
||||
{
|
||||
if (flipper->active == 0 && gCurrentPinballGame->ballCatchState == 0 && gCurrentPinballGame->flippersDisabled == 0)
|
||||
if (flipper->active == 0 &&
|
||||
gCurrentPinballGame->ballCatchState == NOT_TRAPPED &&
|
||||
gCurrentPinballGame->flippersDisabled == 0)
|
||||
{
|
||||
m4aSongNumStart(SE_FLIPPER_PRESSED);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#include "constants/bg_music.h"
|
||||
#include "m4a.h"
|
||||
#include "constants/anglemath.h"
|
||||
#include "constants/main_board.h"
|
||||
|
||||
extern u8 gCatchTargetCollisionBitmap[];
|
||||
extern u16 gFlipperCollisionAngles[][2];
|
||||
|
|
@ -404,7 +405,7 @@ void ComputeWallReflection(u16 arg0, struct Vector16 *arg1, struct Vector16 *arg
|
|||
m4aSongNumStart(SE_WALL_HIT);
|
||||
|
||||
if (forwardMag > 0x118
|
||||
&& gCurrentPinballGame->entityOverlayCollisionState == 0
|
||||
&& gCurrentPinballGame->kickbackFiring == 0
|
||||
&& gMain.selectedField < MAIN_FIELD_COUNT)
|
||||
{
|
||||
PlayRumble(6);
|
||||
|
|
@ -883,7 +884,7 @@ void ProcessBonusTrapPhysics(void)
|
|||
else
|
||||
{
|
||||
gCurrentPinballGame->collisionMapScrollY = 0;
|
||||
gCurrentPinballGame->ballCatchState = 4;
|
||||
gCurrentPinballGame->ballCatchState = TRAP_CENTER_HOLE;
|
||||
if (gMain.selectedField == FIELD_RUBY)
|
||||
DispatchRubyCatchModeInit();
|
||||
else
|
||||
|
|
|
|||
|
|
@ -133,9 +133,9 @@ void AllBoardProcess_8B_4CEB4(void)
|
|||
gBG0TilemapBuffer[0x7DB] = (gCurrentPinballGame->numLives + 5) * 2 - 0x3EA0;
|
||||
gBG0TilemapBuffer[0x7FB] = (gCurrentPinballGame->numLives + 5) * 2 - 0x3E9F;
|
||||
|
||||
if (gCurrentPinballGame->catchCounterValue == 13)
|
||||
if (gCurrentPinballGame->chargeFillValue == 13)
|
||||
{
|
||||
if (gCurrentPinballGame->catchCounterBlinkTimer & 0x8)
|
||||
if (gCurrentPinballGame->fullChargeIndicatorBlinkTimer & 0x8)
|
||||
{
|
||||
gBG0TilemapBuffer[0x7DD] = 0xC19A;
|
||||
gBG0TilemapBuffer[0x7FD] = 0xC19B;
|
||||
|
|
@ -146,8 +146,8 @@ void AllBoardProcess_8B_4CEB4(void)
|
|||
gBG0TilemapBuffer[0x7FD] = 0xC183;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->catchCounterBlinkTimer)
|
||||
gCurrentPinballGame->catchCounterBlinkTimer--;
|
||||
if (gCurrentPinballGame->fullChargeIndicatorBlinkTimer)
|
||||
gCurrentPinballGame->fullChargeIndicatorBlinkTimer--;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ void BonusFieldSelect_State1_2768(void)
|
|||
{
|
||||
if (gSelectedBonusField != FIELD_SELECT_DUSCLOPS && gSelectedBonusField != FIELD_SELECT_GROUDON)
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0x6D);
|
||||
m4aSongNumStart(SE_DEX_INFO_FIELD_SELECT_MOVE);
|
||||
gSelectedBonusField--;
|
||||
}
|
||||
}
|
||||
|
|
@ -115,7 +115,7 @@ void BonusFieldSelect_State1_2768(void)
|
|||
{
|
||||
if (gSelectedBonusField != FIELD_SELECT_SPHEAL && gSelectedBonusField != FIELD_SELECT_RAYQUAZA)
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0x6D);
|
||||
m4aSongNumStart(SE_DEX_INFO_FIELD_SELECT_MOVE);
|
||||
gSelectedBonusField++;
|
||||
}
|
||||
}
|
||||
|
|
@ -123,7 +123,7 @@ void BonusFieldSelect_State1_2768(void)
|
|||
{
|
||||
if (gSelectedBonusField > FIELD_SELECT_SPHEAL)
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0x6D);
|
||||
m4aSongNumStart(SE_DEX_INFO_FIELD_SELECT_MOVE);
|
||||
gSelectedBonusField -= 3;
|
||||
}
|
||||
}
|
||||
|
|
@ -131,7 +131,7 @@ void BonusFieldSelect_State1_2768(void)
|
|||
{
|
||||
if (gSelectedBonusField < FIELD_SELECT_GROUDON)
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0x6D);
|
||||
m4aSongNumStart(SE_DEX_INFO_FIELD_SELECT_MOVE);
|
||||
gSelectedBonusField += 3;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -276,12 +276,12 @@ void ProcessRubyCollisionEvent(s32 arg0, s16* arg1, u16* arg2)
|
|||
if (gCurrentPinballGame->ball->positionQ1.x > 359)
|
||||
{
|
||||
if (gCurrentPinballGame->ball->positionQ1.y > 199)
|
||||
gCurrentPinballGame->ballCatchState = 1;
|
||||
gCurrentPinballGame->ballCatchState = TRAP_CATCH_HOLE;
|
||||
else
|
||||
gCurrentPinballGame->ballCatchState = 3;
|
||||
gCurrentPinballGame->ballCatchState = TRAP_EVO_SHOP_HOLE;
|
||||
}
|
||||
else
|
||||
gCurrentPinballGame->ballCatchState= 2;
|
||||
gCurrentPinballGame->ballCatchState= TRAP_EGG_HOLE;
|
||||
|
||||
DispatchRubyCatchModeInit();
|
||||
gCurrentPinballGame->collisionResponseType = 7;
|
||||
|
|
@ -1006,9 +1006,9 @@ void ProcessSapphireCollisionEvent(u8 arg0, u16* arg1, u16* arg2)
|
|||
if (gCurrentPinballGame->collisionCooldownTimer == 0)
|
||||
{
|
||||
if (gCurrentPinballGame->ball->positionQ1.x >= 200)
|
||||
gCurrentPinballGame->ballCatchState = 1;
|
||||
gCurrentPinballGame->ballCatchState = TRAP_CATCH_HOLE;
|
||||
else
|
||||
gCurrentPinballGame->ballCatchState = 3;
|
||||
gCurrentPinballGame->ballCatchState = TRAP_EVO_SHOP_HOLE;
|
||||
|
||||
DispatchSapphireCatchModeInit();
|
||||
gCurrentPinballGame->collisionResponseType = 7;
|
||||
|
|
@ -1279,7 +1279,7 @@ void ProcessSapphireCollisionEvent(u8 arg0, u16* arg1, u16* arg2)
|
|||
|
||||
gCurrentPinballGame->catchArrowProgress++;
|
||||
|
||||
if (gCurrentPinballGame->catchCounterValue == 13)
|
||||
if (gCurrentPinballGame->chargeFillValue == 13)
|
||||
m4aSongNumStart(SE_UNKNOWN_0x99);
|
||||
|
||||
if (gCurrentPinballGame->catchArrowProgress > 1)
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ void EndOfBallSequence(void)
|
|||
ClearDebugTextDisplay();
|
||||
if (gCurrentPinballGame->numLives > 0)
|
||||
{
|
||||
gCurrentPinballGame->modeTimeRemaining = 1800;
|
||||
gCurrentPinballGame->saverTimeRemaining = 1800;
|
||||
gCurrentPinballGame->numLives--;
|
||||
gCurrentPinballGame->collisionCooldownTimer = 60;
|
||||
gCurrentPinballGame->bonusCatchCount = 0;
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ void FieldSelect_State1_8C7C(void)
|
|||
{
|
||||
if (gFieldSelectData.selectedField == FIELD_SAPPHIRE)
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0x6D);
|
||||
m4aSongNumStart(SE_DEX_INFO_FIELD_SELECT_MOVE);
|
||||
gFieldSelectData.selectedField = FIELD_RUBY;
|
||||
gFieldSelectData.rubyHighlightVisible = 0;
|
||||
gFieldSelectData.sapphireHighlightVisible = 1;
|
||||
|
|
@ -122,7 +122,7 @@ void FieldSelect_State1_8C7C(void)
|
|||
{
|
||||
if (gFieldSelectData.selectedField == FIELD_RUBY)
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0x6D);
|
||||
m4aSongNumStart(SE_DEX_INFO_FIELD_SELECT_MOVE);
|
||||
gFieldSelectData.selectedField = FIELD_SAPPHIRE;
|
||||
gFieldSelectData.rubyHighlightVisible = 1;
|
||||
gFieldSelectData.sapphireHighlightVisible = 0;
|
||||
|
|
@ -234,7 +234,7 @@ void FieldSelect_State1_8C7C(void)
|
|||
{
|
||||
if (gFieldSelectData.selectedField == FIELD_SAPPHIRE)
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0x6D);
|
||||
m4aSongNumStart(SE_DEX_INFO_FIELD_SELECT_MOVE);
|
||||
gFieldSelectData.selectedField = FIELD_RUBY;
|
||||
gFieldSelectData.rubyHighlightVisible = 0;
|
||||
gFieldSelectData.sapphireHighlightVisible = 1;
|
||||
|
|
@ -248,7 +248,7 @@ void FieldSelect_State1_8C7C(void)
|
|||
{
|
||||
if (gFieldSelectData.selectedField == FIELD_RUBY)
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0x6D);
|
||||
m4aSongNumStart(SE_DEX_INFO_FIELD_SELECT_MOVE);
|
||||
gFieldSelectData.selectedField = FIELD_SAPPHIRE;
|
||||
gFieldSelectData.rubyHighlightVisible = 1;
|
||||
gFieldSelectData.sapphireHighlightVisible = 0;
|
||||
|
|
|
|||
|
|
@ -338,16 +338,16 @@ void InitPinballGameState(void)
|
|||
{
|
||||
gCurrentPinballGame->pikaChargeTarget = 168;
|
||||
gCurrentPinballGame->pikaChargeProgress = 168;
|
||||
gCurrentPinballGame->prevCatchCounterValue = 13;
|
||||
gCurrentPinballGame->catchCounterValue = 13;
|
||||
gCurrentPinballGame->catchCounterSlideTimer = 0;
|
||||
gCurrentPinballGame->catchCounterXShift = 0;
|
||||
gCurrentPinballGame->catchCounterSlideOffsetY = 120;
|
||||
gCurrentPinballGame->catchCounterBlinkTimer = 60;
|
||||
gCurrentPinballGame->prevChargeFillValue = 13;
|
||||
gCurrentPinballGame->chargeFillValue = 13;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer = 0;
|
||||
gCurrentPinballGame->chargeIndicatorXOffset = 0;
|
||||
gCurrentPinballGame->chargeIndicatorYOffset = 120;
|
||||
gCurrentPinballGame->fullChargeIndicatorBlinkTimer = 60;
|
||||
DmaCopy16(3, gDxModePikachuObjTiles, (void *)OBJ_VRAM0 + 0x600, 0x180);
|
||||
gCurrentPinballGame->outLanePikaPosition = 2;
|
||||
gMain.fieldSpriteGroups[41]->available = FALSE;
|
||||
gCurrentPinballGame->pikaSaverTimer = 1;
|
||||
gCurrentPinballGame->pichuEntranceTimer = 1;
|
||||
gCurrentPinballGame->ballUpgradeType = BALL_UPGRADE_TYPE_MASTER_BALL;
|
||||
gCurrentPinballGame->ballUpgradeCounter = 60 * 60;
|
||||
gCurrentPinballGame->numLives = 9;
|
||||
|
|
@ -355,8 +355,8 @@ void InitPinballGameState(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->catchCounterXShift = 0;
|
||||
gCurrentPinballGame->catchCounterSlideOffsetY = -4;
|
||||
gCurrentPinballGame->chargeIndicatorXOffset = 0;
|
||||
gCurrentPinballGame->chargeIndicatorYOffset = -4;
|
||||
gCurrentPinballGame->numLives = 2;
|
||||
gCurrentPinballGame->coins = 10;
|
||||
}
|
||||
|
|
@ -389,7 +389,7 @@ void SetBallPositionForBonusReturn(void)
|
|||
gCurrentPinballGame->ballFrozenState = 1;
|
||||
gCurrentPinballGame->trapAnimState = 0;
|
||||
gCurrentPinballGame->modeAnimTimer = 120;
|
||||
gCurrentPinballGame->ballCatchState = 4;
|
||||
gCurrentPinballGame->ballCatchState = TRAP_CENTER_HOLE;
|
||||
if (gMain.selectedField == FIELD_RUBY)
|
||||
UpdateRubyCatchModeAnimation();
|
||||
else
|
||||
|
|
@ -1035,18 +1035,18 @@ void RestoreGameState(u16 arg0)
|
|||
if ((var2 & 0x3) == 1)
|
||||
{
|
||||
gCurrentPinballGame->pikaSpinMomentum = 0;
|
||||
gCurrentPinballGame->catchOverlayFrameTimer = 0;
|
||||
gCurrentPinballGame->catchOverlayKeyframeIndex = 0;
|
||||
gCurrentPinballGame->kickbackAnimFrameTimer = 0;
|
||||
gCurrentPinballGame->kickbackFrameId = 0;
|
||||
gCurrentPinballGame->pikaChargeTarget = 0;
|
||||
gCurrentPinballGame->pikaChargeProgress = 0;
|
||||
gCurrentPinballGame->prevCatchCounterValue = 0;
|
||||
gCurrentPinballGame->catchCounterValue = 0;
|
||||
gCurrentPinballGame->catchCounterXShift = 0;
|
||||
gCurrentPinballGame->catchCounterSlideOffsetY = -4;
|
||||
gCurrentPinballGame->catchCounterAnimState = 256;
|
||||
gCurrentPinballGame->catchCounterScaleY = 256;
|
||||
gCurrentPinballGame->pikachuAnimTimer = 0;
|
||||
gCurrentPinballGame->catchCounterSlideTimer = 0;
|
||||
gCurrentPinballGame->prevChargeFillValue = 0;
|
||||
gCurrentPinballGame->chargeFillValue = 0;
|
||||
gCurrentPinballGame->chargeIndicatorXOffset = 0;
|
||||
gCurrentPinballGame->chargeIndicatorYOffset = -4;
|
||||
gCurrentPinballGame->chargeIndicatorScaleX = 256;
|
||||
gCurrentPinballGame->chargeIndicatorScaleY = 256;
|
||||
gCurrentPinballGame->chargeFillAnimTimer = 0;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1379,8 +1379,8 @@ void RestoreMainFieldDynamicGraphics(void)
|
|||
|
||||
var0 = gCurrentPinballGame->pikachuSpinFrame;
|
||||
DmaCopy16(3, gMainBoardPikaSpinner_Gfx[var0 = gCurrentPinballGame->pikachuSpinFrame], 0x06010780, 0x120);
|
||||
var0 = gCurrentPinballGame->catchCounterValue;
|
||||
DmaCopy16(3, gCatchCounterDigitTilesGfx[var0], 0x06010AE0, 0x80);
|
||||
var0 = gCurrentPinballGame->chargeFillValue;
|
||||
DmaCopy16(3, gChargeFillIndicator_Gfx[var0], 0x06010AE0, 0x80);
|
||||
|
||||
for (i = 0; i <= 1; i++)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -429,7 +429,7 @@ void Pokedex_DetailViewInput(void)
|
|||
{
|
||||
if ((gPokedexSelectedMon < BONUS_SPECIES_START) && (gPokedexDescriptionPage == 1))
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0x6D);
|
||||
m4aSongNumStart(SE_DEX_INFO_FIELD_SELECT_MOVE);
|
||||
gPokedexDescriptionPage = 0;
|
||||
PrintDexDescription(gPokedexSelectedMon, 0);
|
||||
gPokedexSpriteIndexBase = gPokedexDescriptionPage;
|
||||
|
|
@ -439,7 +439,7 @@ void Pokedex_DetailViewInput(void)
|
|||
{
|
||||
if ((gPokedexSelectedMon < BONUS_SPECIES_START) && (gPokedexDescriptionPage == 0))
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0x6D);
|
||||
m4aSongNumStart(SE_DEX_INFO_FIELD_SELECT_MOVE);
|
||||
gPokedexDescriptionPage = 1;
|
||||
PrintDexDescription(gPokedexSelectedMon, 1);
|
||||
gPokedexSpriteIndexBase = gPokedexDescriptionPage;
|
||||
|
|
@ -452,7 +452,7 @@ void Pokedex_DetailViewInput(void)
|
|||
{
|
||||
if (!gPokedexDescriptionPage)
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0x6D);
|
||||
m4aSongNumStart(SE_DEX_INFO_FIELD_SELECT_MOVE);
|
||||
gPokedexDescriptionPage = 1 - gPokedexDescriptionPage;
|
||||
PrintDexDescription(gPokedexSelectedMon, gPokedexDescriptionPage);
|
||||
gPokedexSpriteIndexBase = gPokedexDescriptionPage;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "main.h"
|
||||
#include "m4a.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/main_board.h"
|
||||
|
||||
extern void RenderBannerSlideAnimation(void);
|
||||
|
||||
|
|
@ -186,8 +187,8 @@ void RenderBannerSlideAnimation(void)
|
|||
if (gCurrentPinballGame->bannerSlideTimer < 36)
|
||||
{
|
||||
|
||||
if ((gCurrentPinballGame->ballCatchState == 3 && gCurrentPinballGame->evolutionShopActive == 1) ||
|
||||
(gCurrentPinballGame->ballCatchState == 4 && gCurrentPinballGame->rouletteOutcomeId == 9))
|
||||
if ((gCurrentPinballGame->ballCatchState == TRAP_EVO_SHOP_HOLE && gCurrentPinballGame->evolutionShopActive == 1) ||
|
||||
(gCurrentPinballGame->ballCatchState == TRAP_CENTER_HOLE && gCurrentPinballGame->rouletteOutcomeId == 9))
|
||||
{
|
||||
gCurrentPinballGame->paletteSwapActive = 0;
|
||||
}
|
||||
|
|
@ -213,8 +214,8 @@ void RenderBannerSlideAnimation(void)
|
|||
gMain.blendBrightness = 4;
|
||||
if (gCurrentPinballGame->bannerSlideTimer <= 0x27)
|
||||
{
|
||||
if ((gCurrentPinballGame->ballCatchState == 3 && gCurrentPinballGame->evolutionShopActive == 1) ||
|
||||
(gCurrentPinballGame->ballCatchState == 4 && gCurrentPinballGame->rouletteOutcomeId == 9))
|
||||
if ((gCurrentPinballGame->ballCatchState == TRAP_EVO_SHOP_HOLE && gCurrentPinballGame->evolutionShopActive == 1) ||
|
||||
(gCurrentPinballGame->ballCatchState == TRAP_CENTER_HOLE && gCurrentPinballGame->rouletteOutcomeId == 9))
|
||||
{
|
||||
gCurrentPinballGame->paletteSwapActive = 0;
|
||||
}
|
||||
|
|
@ -254,8 +255,8 @@ void RenderBannerSlideAnimation(void)
|
|||
gCurrentPinballGame->bannerSlideTimer++;
|
||||
gCurrentPinballGame->bannerSlideVelocity -= 0xA;
|
||||
if (gCurrentPinballGame->bannerSlideTimer > 0x18 &&
|
||||
(gCurrentPinballGame->ballCatchState != 3 || gCurrentPinballGame->evolutionShopActive != 1) &&
|
||||
(gCurrentPinballGame->ballCatchState != 4 || gCurrentPinballGame->rouletteOutcomeId != 9))
|
||||
(gCurrentPinballGame->ballCatchState != TRAP_EVO_SHOP_HOLE || gCurrentPinballGame->evolutionShopActive != 1) &&
|
||||
(gCurrentPinballGame->ballCatchState != TRAP_CENTER_HOLE || gCurrentPinballGame->rouletteOutcomeId != 9))
|
||||
{
|
||||
gMain.blendBrightness = 4;
|
||||
if (gCurrentPinballGame->bannerSlideTimer > 0x19)
|
||||
|
|
@ -283,8 +284,8 @@ void RenderBannerSlideAnimation(void)
|
|||
gMain.fieldSpriteGroups[11]->available = 0;
|
||||
gCurrentPinballGame->bannerGfxIndex = 0;
|
||||
gCurrentPinballGame->activePortraitType = 0;
|
||||
if ((gCurrentPinballGame->ballCatchState != 3 || gCurrentPinballGame->evolutionShopActive != 1) &&
|
||||
(gCurrentPinballGame->ballCatchState != 4 || gCurrentPinballGame->rouletteOutcomeId != 9))
|
||||
if ((gCurrentPinballGame->ballCatchState != TRAP_EVO_SHOP_HOLE || gCurrentPinballGame->evolutionShopActive != 1) &&
|
||||
(gCurrentPinballGame->ballCatchState != TRAP_CENTER_HOLE || gCurrentPinballGame->rouletteOutcomeId != 9))
|
||||
{
|
||||
gMain.blendBrightness = 0;
|
||||
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0], (void *)(OBJ_PLTT), 0x20);
|
||||
|
|
|
|||
|
|
@ -24,16 +24,16 @@ void DispatchRubyCatchModeInit(void)
|
|||
|
||||
switch (gCurrentPinballGame->ballCatchState)
|
||||
{
|
||||
case 1:
|
||||
case TRAP_CATCH_HOLE:
|
||||
InitSharpedoCatchMode();
|
||||
break;
|
||||
case 2:
|
||||
case TRAP_EGG_HOLE:
|
||||
InitEggHatchMode();
|
||||
break;
|
||||
case 3:
|
||||
case TRAP_EVO_SHOP_HOLE:
|
||||
InitRubyEvolutionShopMode();
|
||||
break;
|
||||
case 4:
|
||||
case TRAP_CENTER_HOLE:
|
||||
InitCenterTrapMode();
|
||||
break;
|
||||
}
|
||||
|
|
@ -48,16 +48,16 @@ void UpdateRubyCatchModeAnimation(void)
|
|||
|
||||
switch (gCurrentPinballGame->ballCatchState)
|
||||
{
|
||||
case 1:
|
||||
case TRAP_CATCH_HOLE:
|
||||
AnimateSharpedoCatchSequence(); // Catch hole
|
||||
break;
|
||||
case 2:
|
||||
case TRAP_EGG_HOLE:
|
||||
AnimateEggHatchSequence(); //Hatch hole
|
||||
break;
|
||||
case 3:
|
||||
case TRAP_EVO_SHOP_HOLE:
|
||||
AnimateRubyEvolutionShopSequence(); //Mart / Evo hole
|
||||
break;
|
||||
case 4:
|
||||
case TRAP_CENTER_HOLE:
|
||||
AnimateCenterTrapSequence(); //Center Hole
|
||||
break;
|
||||
}
|
||||
|
|
@ -235,7 +235,7 @@ void AnimateSharpedoCatchSequence(void)
|
|||
gCurrentPinballGame->collisionCooldownTimer = 30;
|
||||
gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2;
|
||||
gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2;
|
||||
gCurrentPinballGame->ballCatchState = 0;
|
||||
gCurrentPinballGame->ballCatchState = NOT_TRAPPED;
|
||||
gCurrentPinballGame->ballUpgradeTimerFrozen = 0;
|
||||
gCurrentPinballGame->catchHoleAnimFrame = 0;
|
||||
}
|
||||
|
|
@ -311,8 +311,8 @@ void AnimateEggHatchSequence(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->ball->ballHidden = modeAnimTimer;
|
||||
gCurrentPinballGame->ballCatchState = modeAnimTimer;
|
||||
gCurrentPinballGame->ball->ballHidden = 0;
|
||||
gCurrentPinballGame->ballCatchState = NOT_TRAPPED;
|
||||
|
||||
gCurrentPinballGame->ball->positionQ0.x = 0x58;
|
||||
gCurrentPinballGame->ball->positionQ0.y = 0xA2;
|
||||
|
|
@ -395,7 +395,7 @@ void AnimateRubyEvolutionShopSequence(void)
|
|||
gCurrentPinballGame->ballUpgradeTimerFrozen = 0;
|
||||
gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2;
|
||||
gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->ball->positionQ0.y * 2;
|
||||
gCurrentPinballGame->ballCatchState = 0;
|
||||
gCurrentPinballGame->ballCatchState = NOT_TRAPPED;
|
||||
gCurrentPinballGame->shopDoorTargetFrame = 0x13;
|
||||
|
||||
m4aSongNumStart(SE_UNKNOWN_0xC3);
|
||||
|
|
@ -729,7 +729,7 @@ void UpdateShopEntryAnimation(s16 arg0)
|
|||
m4aSongNumStart(MUS_FIELD_SAPPHIRE2);
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->ballCatchState == 4)
|
||||
if (gCurrentPinballGame->ballCatchState == TRAP_CENTER_HOLE)
|
||||
gCurrentPinballGame->outcomeFrameCounter = 170;
|
||||
else
|
||||
gCurrentPinballGame->modeAnimTimer = 24;
|
||||
|
|
@ -1147,7 +1147,7 @@ void UpdateShopEntryAnimation(s16 arg0)
|
|||
|
||||
if (gCurrentPinballGame->catchModeEventTimer == 0)
|
||||
{
|
||||
if (gCurrentPinballGame->ballCatchState == 4)
|
||||
if (gCurrentPinballGame->ballCatchState == TRAP_CENTER_HOLE)
|
||||
gCurrentPinballGame->outcomeFrameCounter = 170;
|
||||
else
|
||||
gCurrentPinballGame->modeAnimTimer = 24;
|
||||
|
|
@ -1252,7 +1252,7 @@ void AnimateCenterTrapSequence(void)
|
|||
else
|
||||
{
|
||||
gCurrentPinballGame->trapAnimState = 0;
|
||||
gCurrentPinballGame->ballCatchState = 0;
|
||||
gCurrentPinballGame->ballCatchState = NOT_TRAPPED;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1266,7 +1266,7 @@ void TransitionToBonusField(void)
|
|||
gCurrentPinballGame->ballFrozenState = 0;
|
||||
gCurrentPinballGame->ball->scale = 0x100;
|
||||
gCurrentPinballGame->trapAnimState = 0;
|
||||
gCurrentPinballGame->ballCatchState = 0;
|
||||
gCurrentPinballGame->ballCatchState = NOT_TRAPPED;
|
||||
if (gCurrentPinballGame->bonusReturnState == 0)
|
||||
{
|
||||
gCurrentPinballGame->evoItemCount = 0;
|
||||
|
|
|
|||
222
src/rom_201B8.c
222
src/rom_201B8.c
|
|
@ -39,14 +39,14 @@ extern const u16 gPortraitIdleCycleData[];
|
|||
extern const u16 gPortraitAnimPalettes[];
|
||||
extern const s16 gRouletteOutcomeFrameOffsets[];
|
||||
|
||||
extern struct SongHeader se_unk_7a;
|
||||
extern struct SongHeader se_unk_79;
|
||||
extern struct SongHeader se_pika_full_charge_1_up;
|
||||
extern struct SongHeader se_pika_spinner_clack;
|
||||
extern struct SongHeader se_whiscash_splashdown;
|
||||
extern struct SongHeader se_unk_142;
|
||||
extern struct SongHeader se_unk_b1;
|
||||
extern struct SongHeader se_unk_b3;
|
||||
extern struct SongHeader se_pika_no_kickback;
|
||||
extern struct SongHeader se_pikachu_kickback;
|
||||
extern struct SongHeader se_pichu_kickback;
|
||||
extern s16 gPikaSaverAnimFrameTable[100];
|
||||
extern s16 gCatchHoleXPositions[3];
|
||||
extern s16 gOutlaneCenterXPositions[2];
|
||||
extern u16 gCatchOverlayAnimData[][2];
|
||||
extern s16 gCatchOverlayOamData[28][12];
|
||||
|
||||
|
|
@ -798,8 +798,8 @@ void RubyPond_EntityLogic(void)
|
|||
gCurrentPinballGame->scoreAddedInFrame = 10;
|
||||
m4aSongNumStart(SE_RUBY_BUMPER_HIT);
|
||||
PlayRumble(7);
|
||||
if (gCurrentPinballGame->modeTimeRemaining)
|
||||
gCurrentPinballGame->modeTimeRemaining = 1;
|
||||
if (gCurrentPinballGame->saverTimeRemaining)
|
||||
gCurrentPinballGame->saverTimeRemaining = 1;
|
||||
break;
|
||||
case WHISCASH_STATE_ANGRY:
|
||||
if (gWhiscashFramesetData[gCurrentPinballGame->whiscashFrameIx][1] > gCurrentPinballGame->whiscashStateTimer)
|
||||
|
|
@ -1248,19 +1248,19 @@ void UpdatePikachuChargeCounter(void)
|
|||
if (gCurrentPinballGame->pikaChargeTarget != gCurrentPinballGame->pikaChargeProgress)
|
||||
{
|
||||
gCurrentPinballGame->pikaChargeProgress += 2;
|
||||
gCurrentPinballGame->catchCounterValue = gCurrentPinballGame->pikaChargeProgress / 14;
|
||||
gCurrentPinballGame->catchCounterSlideTimer = 80;
|
||||
gCurrentPinballGame->catchCounterAnimState = 256;
|
||||
gCurrentPinballGame->catchCounterScaleY = 256;
|
||||
if (gCurrentPinballGame->catchCounterValue == 11)
|
||||
gCurrentPinballGame->pikachuAnimTimer = 120;
|
||||
gCurrentPinballGame->chargeFillValue = gCurrentPinballGame->pikaChargeProgress / 14;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer = 80;
|
||||
gCurrentPinballGame->chargeIndicatorScaleX = 256;
|
||||
gCurrentPinballGame->chargeIndicatorScaleY = 256;
|
||||
if (gCurrentPinballGame->chargeFillValue == 11)
|
||||
gCurrentPinballGame->chargeFillAnimTimer = 120;
|
||||
|
||||
if (gCurrentPinballGame->catchCounterValue > 11)
|
||||
if (gCurrentPinballGame->chargeFillValue > 11)
|
||||
{
|
||||
gCurrentPinballGame->catchCounterValue = 12;
|
||||
gCurrentPinballGame->catchCounterSlideTimer = 120;
|
||||
gCurrentPinballGame->catchCounterAnimState = 256;
|
||||
gCurrentPinballGame->catchCounterScaleY = 256;
|
||||
gCurrentPinballGame->chargeFillValue = 12;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer = 120;
|
||||
gCurrentPinballGame->chargeIndicatorScaleX = 256;
|
||||
gCurrentPinballGame->chargeIndicatorScaleY = 256;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->pikaChargeProgress < 168 && gCurrentPinballGame->pikaChargeProgress % 8 == 0)
|
||||
|
|
@ -1274,7 +1274,7 @@ void UpdatePikachuChargeCounter(void)
|
|||
gCurrentPinballGame->pikaChargeProgress = gCurrentPinballGame->pikaChargeTarget;
|
||||
if (gCurrentPinballGame->pikaChargeProgress >= 168)
|
||||
{
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_unk_7a);
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_pika_full_charge_1_up);
|
||||
gCurrentPinballGame->scoreAddedInFrame = 3000;
|
||||
}
|
||||
}
|
||||
|
|
@ -1296,13 +1296,13 @@ void UpdatePikachuChargeCounter(void)
|
|||
else
|
||||
{
|
||||
gCurrentPinballGame->pikaSpinFrameCounter = 0;
|
||||
MPlayStart(&gMPlayInfo_SE3, &se_unk_79);
|
||||
MPlayStart(&gMPlayInfo_SE3, &se_pika_spinner_clack);
|
||||
gCurrentPinballGame->scoreAddedInFrame = 100;
|
||||
if (gCurrentPinballGame->catchCounterValue < 12 && gCurrentPinballGame->entityOverlayCollisionState == 0)
|
||||
if (gCurrentPinballGame->chargeFillValue < 12 && gCurrentPinballGame->kickbackFiring == 0)
|
||||
{
|
||||
gCurrentPinballGame->catchCounterSlideTimer = 80;
|
||||
gCurrentPinballGame->catchCounterAnimState = 256;
|
||||
gCurrentPinballGame->catchCounterScaleY = 256;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer = 80;
|
||||
gCurrentPinballGame->chargeIndicatorScaleX = 256;
|
||||
gCurrentPinballGame->chargeIndicatorScaleY = 256;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1327,13 +1327,13 @@ void UpdatePikachuChargeCounter(void)
|
|||
else
|
||||
{
|
||||
gCurrentPinballGame->pikaSpinFrameCounter = 0;
|
||||
MPlayStart(&gMPlayInfo_SE3, &se_unk_79);
|
||||
MPlayStart(&gMPlayInfo_SE3, &se_pika_spinner_clack);
|
||||
gCurrentPinballGame->scoreAddedInFrame = 100;
|
||||
if (gCurrentPinballGame->catchCounterValue < 12 && gCurrentPinballGame->entityOverlayCollisionState == 0)
|
||||
if (gCurrentPinballGame->chargeFillValue < 12 && gCurrentPinballGame->kickbackFiring == 0)
|
||||
{
|
||||
gCurrentPinballGame->catchCounterSlideTimer = 80;
|
||||
gCurrentPinballGame->catchCounterAnimState = 256;
|
||||
gCurrentPinballGame->catchCounterScaleY = 256;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer = 80;
|
||||
gCurrentPinballGame->chargeIndicatorScaleX = 256;
|
||||
gCurrentPinballGame->chargeIndicatorScaleY = 256;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1855,18 +1855,19 @@ void DrawSideBumperSprites(void)
|
|||
}
|
||||
}
|
||||
|
||||
void UpdateCatchModeLogic(void)
|
||||
void UpdateKickbackLogic(void)
|
||||
{
|
||||
s16 i;
|
||||
s16 outlaneChuteIx;
|
||||
s16 j;
|
||||
s16 r5;
|
||||
s16 oamIx;
|
||||
s16 tempY;
|
||||
struct SpriteGroup *spriteGroup;
|
||||
struct OamDataSimple *oamSimple;
|
||||
u16 *dst;
|
||||
const u16 *src;
|
||||
|
||||
AnimateCreatureApproach();
|
||||
PichuArrivalSequence();
|
||||
|
||||
if (gCurrentPinballGame->pikaChargeTarget > 167)
|
||||
{
|
||||
|
|
@ -1887,13 +1888,13 @@ void UpdateCatchModeLogic(void)
|
|||
|
||||
if (gCurrentPinballGame->outLanePikaPosition == 2)
|
||||
{
|
||||
gCurrentPinballGame->catchHoleOccupied[0] = 1;
|
||||
gCurrentPinballGame->catchHoleOccupied[1] = 1;
|
||||
gCurrentPinballGame->kickbackOccupied[0] = 1;
|
||||
gCurrentPinballGame->kickbackOccupied[1] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->catchHoleOccupied[0 + gCurrentPinballGame->outLanePikaPosition] = 1;
|
||||
gCurrentPinballGame->catchHoleOccupied[1 - gCurrentPinballGame->outLanePikaPosition] = 0;
|
||||
gCurrentPinballGame->kickbackOccupied[0 + gCurrentPinballGame->outLanePikaPosition] = 1;
|
||||
gCurrentPinballGame->kickbackOccupied[1 - gCurrentPinballGame->outLanePikaPosition] = 0;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->pikaKickbackTimer != 0)
|
||||
|
|
@ -1902,34 +1903,34 @@ void UpdateCatchModeLogic(void)
|
|||
{
|
||||
// gCurrentPinballGame->outLaneSide + gCurrentPinballGame->outLanePikaPosition
|
||||
// Note: this can be && chained off of the previous if, once we have this line deciphered.
|
||||
if (gCurrentPinballGame->catchHoleOccupied[gCurrentPinballGame->outLaneSide - 1] != 0)
|
||||
if (gCurrentPinballGame->kickbackOccupied[gCurrentPinballGame->outLaneSide - 1] != 0)
|
||||
{
|
||||
if (gCurrentPinballGame->pikaChargeTarget > 167)
|
||||
{
|
||||
gCurrentPinballGame->ballFrozenState = 1;
|
||||
gCurrentPinballGame->entityOverlayCollisionState = 1;
|
||||
gCurrentPinballGame->catchAnimProgress = 120;
|
||||
gCurrentPinballGame->catchAnimDuration = 120;
|
||||
gCurrentPinballGame->catchOverlayTimer = gCurrentPinballGame->catchAnimProgress;
|
||||
gCurrentPinballGame->kickbackFiring = 1;
|
||||
gCurrentPinballGame->kickbackAnimProgress = 120;
|
||||
gCurrentPinballGame->kickbackAnimDuration = 120;
|
||||
gCurrentPinballGame->kickbackLaunchTimer = gCurrentPinballGame->kickbackAnimProgress;
|
||||
gCurrentPinballGame->ballUpgradeTimerFrozen = 1;
|
||||
gCurrentPinballGame->catchOverlayFrameTimer = 0;
|
||||
gCurrentPinballGame->catchOverlayKeyframeIndex = 0;
|
||||
gCurrentPinballGame->kickbackAnimFrameTimer = 0;
|
||||
gCurrentPinballGame->kickbackFrameId = 0;
|
||||
|
||||
if (gCurrentPinballGame->outLanePikaPosition != 2)
|
||||
{
|
||||
gCurrentPinballGame->pikaChargeTarget = 0;
|
||||
gCurrentPinballGame->pikaChargeProgress = 0;
|
||||
gCurrentPinballGame->prevCatchCounterValue = 0;
|
||||
gCurrentPinballGame->catchCounterValue = 0;
|
||||
gCurrentPinballGame->catchCounterXShift = 0;
|
||||
gCurrentPinballGame->catchCounterSlideOffsetY = -4;
|
||||
gCurrentPinballGame->catchCounterAnimState = 256;
|
||||
gCurrentPinballGame->catchCounterScaleY = 256;
|
||||
gCurrentPinballGame->pikachuAnimTimer = 0;
|
||||
gCurrentPinballGame->catchCounterSlideTimer = 0;
|
||||
gCurrentPinballGame->prevChargeFillValue = 0;
|
||||
gCurrentPinballGame->chargeFillValue = 0;
|
||||
gCurrentPinballGame->chargeIndicatorXOffset = 0;
|
||||
gCurrentPinballGame->chargeIndicatorYOffset = -4;
|
||||
gCurrentPinballGame->chargeIndicatorScaleX = 256;
|
||||
gCurrentPinballGame->chargeIndicatorScaleY = 256;
|
||||
gCurrentPinballGame->chargeFillAnimTimer = 0;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer = 0;
|
||||
}
|
||||
|
||||
gCurrentPinballGame->catchBallStartPos = gCurrentPinballGame->ball->positionQ1;
|
||||
gCurrentPinballGame->kickbackBallHoverPos = gCurrentPinballGame->ball->positionQ1;
|
||||
gCurrentPinballGame->scoreAddedInFrame = 30000;
|
||||
|
||||
if (gCurrentPinballGame->bonusPikaSaverCount <= 98)
|
||||
|
|
@ -1938,17 +1939,17 @@ void UpdateCatchModeLogic(void)
|
|||
else
|
||||
{
|
||||
gCurrentPinballGame->pikaKickbackTimer = 60;
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_unk_142);
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_pika_no_kickback);
|
||||
}
|
||||
|
||||
i = gCurrentPinballGame->outLaneSide - 1;
|
||||
outlaneChuteIx = gCurrentPinballGame->outLaneSide - 1;
|
||||
|
||||
if (gCurrentPinballGame->outLanePikaPosition == 2)
|
||||
gCurrentPinballGame->pikaSaverTileIndex[i] = (i) * 7 + 2;
|
||||
gCurrentPinballGame->pikaSaverTileIndex[outlaneChuteIx] = (outlaneChuteIx) * 7 + 2;
|
||||
else
|
||||
gCurrentPinballGame->pikaSaverTileIndex[i] = 2;
|
||||
gCurrentPinballGame->pikaSaverTileIndex[outlaneChuteIx] = 2;
|
||||
|
||||
DmaCopy16(3, gPikaSaverTilesGfx + (gCurrentPinballGame->pikaSaverTileIndex[i] * 0x180), 0x06010480 + ((i) * 0x180), 0x180);
|
||||
DmaCopy16(3, gPikaSaverTilesGfx + (gCurrentPinballGame->pikaSaverTileIndex[outlaneChuteIx] * 0x180), 0x06010480 + ((outlaneChuteIx) * 0x180), 0x180);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1960,66 +1961,67 @@ void UpdateCatchModeLogic(void)
|
|||
gCurrentPinballGame->pikaKickbackTimer--;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->entityOverlayCollisionState != 0)
|
||||
if (gCurrentPinballGame->kickbackFiring != 0)
|
||||
{
|
||||
if (gCurrentPinballGame->catchOverlayTimer > 1)
|
||||
if (gCurrentPinballGame->kickbackLaunchTimer > 1)
|
||||
{
|
||||
r5 = (gCurrentPinballGame->catchAnimProgress * 0x10000) / 10;
|
||||
gCurrentPinballGame->catchOverlayTimer--;
|
||||
if (gCurrentPinballGame->catchAnimProgress != 0)
|
||||
r5 = (gCurrentPinballGame->kickbackAnimProgress * 0x10000) / 10;
|
||||
gCurrentPinballGame->kickbackLaunchTimer--;
|
||||
if (gCurrentPinballGame->kickbackAnimProgress != 0)
|
||||
{
|
||||
gCurrentPinballGame->catchAnimProgress--;
|
||||
if (gCurrentPinballGame->catchAnimProgress == 40 && gCurrentPinballGame->catchOverlayTimer > 40)
|
||||
gCurrentPinballGame->kickbackAnimProgress--;
|
||||
if (gCurrentPinballGame->kickbackAnimProgress == 40 && gCurrentPinballGame->kickbackLaunchTimer > 40)
|
||||
{
|
||||
gCurrentPinballGame->catchAnimProgress = 60;
|
||||
gCurrentPinballGame->kickbackAnimProgress = 60;
|
||||
}
|
||||
}
|
||||
if (gCurrentPinballGame->catchOverlayTimer == 116)
|
||||
if (gCurrentPinballGame->kickbackLaunchTimer == 116)
|
||||
{
|
||||
if (gCurrentPinballGame->activePortraitType)
|
||||
gCurrentPinballGame->catchOverlayTimer = 120;
|
||||
gCurrentPinballGame->kickbackLaunchTimer = 120;
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->activePortraitType = 1;
|
||||
if (gCurrentPinballGame->outLanePikaPosition == 2)
|
||||
{
|
||||
if (gCurrentPinballGame->outLaneSide == 1)
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_unk_b1);
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_pikachu_kickback);
|
||||
else
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_unk_b3);
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_pichu_kickback);
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x40);
|
||||
}
|
||||
else
|
||||
{
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_unk_b1);
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_pikachu_kickback);
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x40);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (gCurrentPinballGame->catchOverlayTimer == 115 && gCurrentPinballGame->activePortraitType == 1)
|
||||
if (gCurrentPinballGame->kickbackLaunchTimer == 115 && gCurrentPinballGame->activePortraitType == 1)
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_SE1, 0xFFFF, 0x200);
|
||||
|
||||
// used for the horizontal 'floaty' movement when electric builds pre-launch.
|
||||
gCurrentPinballGame->ball->positionQ1.x =
|
||||
gCurrentPinballGame->catchBallStartPos.x + ((Sin(r5) * 6) / 20000) +
|
||||
((gCatchHoleXPositions[gCurrentPinballGame->outLaneSide - 1] * 2 - gCurrentPinballGame->catchBallStartPos.x) * (gCurrentPinballGame->catchAnimDuration - gCurrentPinballGame->catchAnimProgress)) / gCurrentPinballGame->catchAnimDuration;
|
||||
gCurrentPinballGame->kickbackBallHoverPos.x + ((Sin(r5) * 6) / 20000) +
|
||||
((gOutlaneCenterXPositions[gCurrentPinballGame->outLaneSide - 1] * 2 - gCurrentPinballGame->kickbackBallHoverPos.x) * (gCurrentPinballGame->kickbackAnimDuration - gCurrentPinballGame->kickbackAnimProgress)) / gCurrentPinballGame->kickbackAnimDuration;
|
||||
|
||||
tempY = ((gCurrentPinballGame->catchAnimDuration - gCurrentPinballGame->catchAnimProgress) * 40) / gCurrentPinballGame->catchAnimDuration;
|
||||
gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->catchBallStartPos.y - tempY;
|
||||
tempY = ((gCurrentPinballGame->kickbackAnimDuration - gCurrentPinballGame->kickbackAnimProgress) * 40) / gCurrentPinballGame->kickbackAnimDuration;
|
||||
gCurrentPinballGame->ball->positionQ1.y = gCurrentPinballGame->kickbackBallHoverPos.y - tempY;
|
||||
|
||||
gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ1.x * 128;
|
||||
gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ1.y * 128;
|
||||
}
|
||||
else if (gCurrentPinballGame->catchOverlayTimer == 1)
|
||||
else if (gCurrentPinballGame->kickbackLaunchTimer == 1)
|
||||
{
|
||||
gCurrentPinballGame->ball->positionQ1.x = gCatchHoleXPositions[gCurrentPinballGame->outLaneSide - 1] * 2;
|
||||
gCurrentPinballGame->ball->positionQ1.x = gOutlaneCenterXPositions[gCurrentPinballGame->outLaneSide - 1] * 2;
|
||||
gCurrentPinballGame->ball->positionQ1.y = 702;
|
||||
gCurrentPinballGame->ball->positionQ8.x = gCurrentPinballGame->ball->positionQ1.x * 128;
|
||||
gCurrentPinballGame->ball->positionQ8.y = gCurrentPinballGame->ball->positionQ1.y * 128;
|
||||
gCurrentPinballGame->ball->velocity.x = 0;
|
||||
// fly me to the moon
|
||||
gCurrentPinballGame->ball->velocity.y = -300;
|
||||
m4aSongNumStart(SE_UNKNOWN_0x7C);
|
||||
gCurrentPinballGame->catchOverlayTimer = 0;
|
||||
m4aSongNumStart(SE_KICKBACK_THUNDERWAVE);
|
||||
gCurrentPinballGame->kickbackLaunchTimer = 0;
|
||||
gCurrentPinballGame->ballFrozenState = 0;
|
||||
gCurrentPinballGame->ballUpgradeTimerFrozen = 0;
|
||||
gCurrentPinballGame->holeIndicators[(gCurrentPinballGame->outLaneSide - 1) * 3] = 1;
|
||||
|
|
@ -2038,14 +2040,14 @@ void UpdateCatchModeLogic(void)
|
|||
PlayRumble(11);
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->catchOverlayTimer >= 100)
|
||||
if (gCurrentPinballGame->kickbackLaunchTimer >= 100)
|
||||
{
|
||||
if (gCurrentPinballGame->outLanePikaPosition == 2)
|
||||
gCurrentPinballGame->pikaSaverTileIndex[gCurrentPinballGame->outLaneSide - 1] = (gCurrentPinballGame->outLaneSide - 1) * 7 + 2;
|
||||
else
|
||||
gCurrentPinballGame->pikaSaverTileIndex[gCurrentPinballGame->outLaneSide - 1] = 2;
|
||||
|
||||
if (gCurrentPinballGame->catchOverlayTimer == 100)
|
||||
if (gCurrentPinballGame->kickbackLaunchTimer == 100)
|
||||
{
|
||||
gMain.fieldSpriteGroups[38]->available = 1;
|
||||
|
||||
|
|
@ -2061,37 +2063,37 @@ void UpdateCatchModeLogic(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (gCatchOverlayAnimData[gCurrentPinballGame->catchOverlayKeyframeIndex][1] > gCurrentPinballGame->catchOverlayFrameTimer)
|
||||
gCurrentPinballGame->catchOverlayFrameTimer++;
|
||||
if (gCatchOverlayAnimData[gCurrentPinballGame->kickbackFrameId][1] > gCurrentPinballGame->kickbackAnimFrameTimer)
|
||||
gCurrentPinballGame->kickbackAnimFrameTimer++;
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->catchOverlayFrameTimer = 0;
|
||||
gCurrentPinballGame->catchOverlayKeyframeIndex++;
|
||||
gCurrentPinballGame->kickbackAnimFrameTimer = 0;
|
||||
gCurrentPinballGame->kickbackFrameId++;
|
||||
|
||||
if (gCurrentPinballGame->catchOverlayKeyframeIndex == 23)
|
||||
if (gCurrentPinballGame->kickbackFrameId == 23)
|
||||
{
|
||||
m4aSongNumStop(SE_UNKNOWN_0x7C);
|
||||
m4aSongNumStop(SE_KICKBACK_THUNDERWAVE);
|
||||
m4aMPlayVolumeControl(&gMPlayInfo_BGM, 0xFFFF, 0x100);
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->catchOverlayKeyframeIndex > 25)
|
||||
if (gCurrentPinballGame->kickbackFrameId > 25)
|
||||
{
|
||||
gCurrentPinballGame->catchOverlayKeyframeIndex = 25;
|
||||
gCurrentPinballGame->entityOverlayCollisionState = 0;
|
||||
gCurrentPinballGame->kickbackFrameId = 25;
|
||||
gCurrentPinballGame->kickbackFiring = 0;
|
||||
gMain.fieldSpriteGroups[38]->available = 0;
|
||||
gCurrentPinballGame->activePortraitType = 0;
|
||||
|
||||
i = gCurrentPinballGame->outLaneSide - 1;
|
||||
outlaneChuteIx = gCurrentPinballGame->outLaneSide - 1;
|
||||
if (gCurrentPinballGame->outLanePikaPosition == 2)
|
||||
gCurrentPinballGame->pikaSaverTileIndex[i] = i * 9;
|
||||
gCurrentPinballGame->pikaSaverTileIndex[outlaneChuteIx] = outlaneChuteIx * 9;
|
||||
else
|
||||
gCurrentPinballGame->pikaSaverTileIndex[i] = 0;
|
||||
gCurrentPinballGame->pikaSaverTileIndex[outlaneChuteIx] = 0;
|
||||
|
||||
DmaCopy16(3, gPikaSaverTilesGfx + (gCurrentPinballGame->pikaSaverTileIndex[i] * 0x180), 0x06010480 + (i * 0x180), 0x180);
|
||||
DmaCopy16(3, gPikaSaverTilesGfx + (gCurrentPinballGame->pikaSaverTileIndex[outlaneChuteIx] * 0x180), 0x06010480 + (outlaneChuteIx * 0x180), 0x180);
|
||||
}
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->catchOverlayKeyframeIndex >= 17 && gCurrentPinballGame->catchOverlayKeyframeIndex <= 23)
|
||||
if (gCurrentPinballGame->kickbackFrameId >= 17 && gCurrentPinballGame->kickbackFrameId <= 23)
|
||||
{
|
||||
if ((gMain.systemFrameCount & 3) >> 1)
|
||||
gCurrentPinballGame->cameraBaseX = -3;
|
||||
|
|
@ -2099,29 +2101,29 @@ void UpdateCatchModeLogic(void)
|
|||
gCurrentPinballGame->cameraBaseX = 3;
|
||||
}
|
||||
|
||||
r5 = gCatchOverlayAnimData[gCurrentPinballGame->catchOverlayKeyframeIndex][0];
|
||||
i = gCurrentPinballGame->outLaneSide - 1;
|
||||
oamIx = gCatchOverlayAnimData[gCurrentPinballGame->kickbackFrameId][0];
|
||||
outlaneChuteIx = gCurrentPinballGame->outLaneSide - 1;
|
||||
|
||||
spriteGroup = gMain.fieldSpriteGroups[38];
|
||||
spriteGroup->baseX = (i * 177) - (gCurrentPinballGame->cameraXOffset - 16);
|
||||
if (gCurrentPinballGame->entityOverlayCollisionState)
|
||||
spriteGroup->baseX = (outlaneChuteIx * 177) - (gCurrentPinballGame->cameraXOffset - 16);
|
||||
if (gCurrentPinballGame->kickbackFiring)
|
||||
{
|
||||
spriteGroup->baseY = 380 - gCurrentPinballGame->cameraYOffset;
|
||||
gCurrentPinballGame->catchHoleOccupied[i] = 0;
|
||||
gCurrentPinballGame->kickbackOccupied[outlaneChuteIx] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
spriteGroup->baseY = 180;
|
||||
gCurrentPinballGame->catchHoleOccupied[i] = 1;
|
||||
gCurrentPinballGame->kickbackOccupied[outlaneChuteIx] = 1;
|
||||
}
|
||||
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
oamSimple = &spriteGroup->oam[j];
|
||||
dst = (u16 *)&gOamBuffer[oamSimple->oamId];
|
||||
*dst++ = gCatchOverlayOamData[r5][j * 3 + 0];
|
||||
*dst++ = gCatchOverlayOamData[r5][j * 3 + 1];
|
||||
*dst++ = gCatchOverlayOamData[r5][j * 3 + 2];
|
||||
*dst++ = gCatchOverlayOamData[oamIx][j * 3 + 0];
|
||||
*dst++ = gCatchOverlayOamData[oamIx][j * 3 + 1];
|
||||
*dst++ = gCatchOverlayOamData[oamIx][j * 3 + 2];
|
||||
|
||||
gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX;
|
||||
gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY;
|
||||
|
|
@ -2132,15 +2134,15 @@ void UpdateCatchModeLogic(void)
|
|||
|
||||
if (spriteGroup->available)
|
||||
{
|
||||
for (i = 0; i <= 1; i++)
|
||||
for (outlaneChuteIx = 0; outlaneChuteIx <= 1; outlaneChuteIx++)
|
||||
{
|
||||
spriteGroup = gMain.fieldSpriteGroups[29 + i];
|
||||
spriteGroup->baseX = (i * 177) - (gCurrentPinballGame->cameraXOffset - 16);
|
||||
if (gCurrentPinballGame->catchHoleOccupied[i])
|
||||
spriteGroup = gMain.fieldSpriteGroups[29 + outlaneChuteIx];
|
||||
spriteGroup->baseX = (outlaneChuteIx * 177) - (gCurrentPinballGame->cameraXOffset - 16);
|
||||
if (gCurrentPinballGame->kickbackOccupied[outlaneChuteIx])
|
||||
{
|
||||
if ((gMain.fieldFrameCount % 5) == 0)
|
||||
{
|
||||
DmaCopy16(3, gPikaSaverTilesGfx + (gCurrentPinballGame->pikaSaverTileIndex[i] * 0x180), 0x06010480 + (i * 0x180), 0x180);
|
||||
DmaCopy16(3, gPikaSaverTilesGfx + (gCurrentPinballGame->pikaSaverTileIndex[outlaneChuteIx] * 0x180), 0x06010480 + (outlaneChuteIx * 0x180), 0x180);
|
||||
}
|
||||
|
||||
tempY = 380 - gCurrentPinballGame->cameraYOffset;
|
||||
|
|
|
|||
212
src/rom_27E08.c
212
src/rom_27E08.c
|
|
@ -81,7 +81,7 @@ extern struct SongHeader se_unk_85;
|
|||
extern struct SongHeader se_unk_86;
|
||||
|
||||
|
||||
void AnimateCreatureApproach(void)
|
||||
void PichuArrivalSequence(void)
|
||||
{
|
||||
s16 i;
|
||||
struct SpriteGroup *group;
|
||||
|
|
@ -94,36 +94,38 @@ void AnimateCreatureApproach(void)
|
|||
s16 index;
|
||||
|
||||
group = gMain.fieldSpriteGroups[41];
|
||||
if (gCurrentPinballGame->pikaSaverTimer == 0)
|
||||
if (gCurrentPinballGame->pichuEntranceTimer == 0)
|
||||
return;
|
||||
|
||||
if (gCurrentPinballGame->pikaSaverTimer == 800)
|
||||
if (gCurrentPinballGame->pichuEntranceTimer == 800)
|
||||
{
|
||||
group->available = 1;
|
||||
if (gCurrentPinballGame->pikaRescuePath == 1)
|
||||
if (gCurrentPinballGame->pichuWalkMode == 1)
|
||||
{
|
||||
gCurrentPinballGame->catchCreatureX = 1090;
|
||||
gCurrentPinballGame->catchCreatureY = 4680;
|
||||
//Start entrance
|
||||
gCurrentPinballGame->walkMonXPos = 1090;
|
||||
gCurrentPinballGame->walkMonYPos = 4680;
|
||||
gCurrentPinballGame->creatureWaypointIndex = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->catchCreatureX = 2000;
|
||||
gCurrentPinballGame->catchCreatureY = 3820;
|
||||
//Start exit
|
||||
gCurrentPinballGame->walkMonXPos = 2000;
|
||||
gCurrentPinballGame->walkMonYPos = 3820;
|
||||
gCurrentPinballGame->creatureWaypointIndex = 4;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gCurrentPinballGame->pikaSaverTimer == 799)
|
||||
if (gCurrentPinballGame->pichuEntranceTimer == 799)
|
||||
{
|
||||
if (gCurrentPinballGame->pikaRescuePath != 1)
|
||||
if (gCurrentPinballGame->pichuWalkMode != 1)
|
||||
{
|
||||
DmaCopy16(3, gPikaSaverTilesGfx, (void *)0x06010600, 0x180);
|
||||
}
|
||||
}
|
||||
tempVec.x = gPikaSaverWaypoints[gCurrentPinballGame->creatureWaypointIndex].x - 120 - gCurrentPinballGame->catchCreatureX;
|
||||
tempVec.y = gPikaSaverWaypoints[gCurrentPinballGame->creatureWaypointIndex].y - 160 - gCurrentPinballGame->catchCreatureY;
|
||||
tempVec.x = gPikaSaverWaypoints[gCurrentPinballGame->creatureWaypointIndex].x - 120 - gCurrentPinballGame->walkMonXPos;
|
||||
tempVec.y = gPikaSaverWaypoints[gCurrentPinballGame->creatureWaypointIndex].y - 160 - gCurrentPinballGame->walkMonYPos;
|
||||
xx = tempVec.x * tempVec.x;
|
||||
yy = tempVec.y * tempVec.y;
|
||||
squaredMagnitude = xx + yy;
|
||||
|
|
@ -131,12 +133,12 @@ void AnimateCreatureApproach(void)
|
|||
tempVec2.x = (Cos(angle) * 7) / 20000;
|
||||
tempVec2.y = (Sin(angle) * -7) / 20000;
|
||||
index = gAngleToDirectionTable[angle / 0x2000] + (gMain.systemFrameCount % 24) / 8;
|
||||
gCurrentPinballGame->catchCreatureX += tempVec2.x;
|
||||
gCurrentPinballGame->catchCreatureY += tempVec2.y;
|
||||
gCurrentPinballGame->walkMonXPos += tempVec2.x;
|
||||
gCurrentPinballGame->walkMonYPos += tempVec2.y;
|
||||
if (group->available)
|
||||
{
|
||||
group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset;
|
||||
group->baseX = gCurrentPinballGame->walkMonXPos / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->walkMonYPos / 10 - gCurrentPinballGame->cameraYOffset;
|
||||
if (group->baseY > 180)
|
||||
group->baseY = 180;
|
||||
else if (group->baseY < -30)
|
||||
|
|
@ -155,31 +157,31 @@ void AnimateCreatureApproach(void)
|
|||
if (squaredMagnitude < 2500)
|
||||
{
|
||||
gCurrentPinballGame->creatureWaypointIndex++;
|
||||
if (gCurrentPinballGame->pikaRescuePath == 1)
|
||||
if (gCurrentPinballGame->pichuWalkMode == 1)
|
||||
{
|
||||
if (gCurrentPinballGame->creatureWaypointIndex == 4)
|
||||
{
|
||||
DmaCopy16(3, gPikachuSaverTilesGfx, (void *)0x06010600, 0x180);
|
||||
gCurrentPinballGame->outLanePikaPosition = 2;
|
||||
gMain.fieldSpriteGroups[41]->available = 0;
|
||||
gCurrentPinballGame->pikaSaverTimer = 1;
|
||||
m4aSongNumStart(SE_UNKNOWN_0x75);
|
||||
gCurrentPinballGame->pichuEntranceTimer = 1;
|
||||
m4aSongNumStart(SE_PICHU_IN_POSITION_CHIRP);
|
||||
}
|
||||
}
|
||||
else if (gCurrentPinballGame->creatureWaypointIndex == 7)
|
||||
{
|
||||
gMain.fieldSpriteGroups[41]->available = 0;
|
||||
gCurrentPinballGame->pikaSaverTimer = 1;
|
||||
gCurrentPinballGame->pichuEntranceTimer = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gCurrentPinballGame->pikaSaverTimer--;
|
||||
gCurrentPinballGame->pichuEntranceTimer--;
|
||||
}
|
||||
|
||||
void ResetCatchState(s16 arg0)
|
||||
void ResetCatchState(s16 resetHoleIndicators)
|
||||
{
|
||||
if (arg0)
|
||||
if (resetHoleIndicators)
|
||||
{
|
||||
gCurrentPinballGame->allHolesLit = 0;
|
||||
gCurrentPinballGame->holeIndicators[0] = 0;
|
||||
|
|
@ -544,70 +546,70 @@ void AnimateBonusTrapSprite(void)
|
|||
}
|
||||
}
|
||||
|
||||
void AnimateCatchCounterDisplay(void)
|
||||
void ProcessChargeIndicator(void)
|
||||
{
|
||||
s16 i;
|
||||
struct SpriteGroup *group;
|
||||
struct OamDataSimple *oamSimple;
|
||||
s16 index;
|
||||
s16 chargeLevelIx;
|
||||
s16 sp0[3];
|
||||
|
||||
group = gMain.fieldSpriteGroups[17];
|
||||
memset(sp0, 0, sizeof(sp0));
|
||||
if (gCurrentPinballGame->catchCounterValue != gCurrentPinballGame->prevCatchCounterValue)
|
||||
if (gCurrentPinballGame->chargeFillValue != gCurrentPinballGame->prevChargeFillValue)
|
||||
{
|
||||
if (gCurrentPinballGame->catchCounterValue == 12) {
|
||||
if (gCurrentPinballGame->pikachuAnimTimer)
|
||||
if (gCurrentPinballGame->chargeFillValue == 12) {
|
||||
if (gCurrentPinballGame->chargeFillAnimTimer)
|
||||
{
|
||||
gCurrentPinballGame->pikachuAnimTimer--;
|
||||
index = ((gCurrentPinballGame->pikachuAnimTimer % 20) / 10) + 12;
|
||||
if (gCurrentPinballGame->pikachuAnimTimer < 41)
|
||||
gCurrentPinballGame->chargeFillAnimTimer--;
|
||||
chargeLevelIx = ((gCurrentPinballGame->chargeFillAnimTimer % 20) / 10) + 12;
|
||||
if (gCurrentPinballGame->chargeFillAnimTimer < 41)
|
||||
{
|
||||
if (gCurrentPinballGame->pikachuAnimTimer > 2)
|
||||
if (gCurrentPinballGame->chargeFillAnimTimer > 2)
|
||||
{
|
||||
gCurrentPinballGame->catchCounterXShift += 3;
|
||||
gCurrentPinballGame->catchCounterSlideOffsetY += 2;
|
||||
gCurrentPinballGame->chargeIndicatorXOffset += 3;
|
||||
gCurrentPinballGame->chargeIndicatorYOffset += 2;
|
||||
}
|
||||
|
||||
gCurrentPinballGame->catchCounterAnimState = gCurrentPinballGame->catchCounterScaleY = ((gCurrentPinballGame->pikachuAnimTimer * 128) / 40) + 128;
|
||||
sp0[1] = ((40 - gCurrentPinballGame->pikachuAnimTimer) * 16) / 40;
|
||||
sp0[0] = -((40 - gCurrentPinballGame->pikachuAnimTimer) * 16) / 40;
|
||||
gCurrentPinballGame->chargeIndicatorScaleX = gCurrentPinballGame->chargeIndicatorScaleY = ((gCurrentPinballGame->chargeFillAnimTimer * 128) / 40) + 128;
|
||||
sp0[1] = ((40 - gCurrentPinballGame->chargeFillAnimTimer) * 16) / 40;
|
||||
sp0[0] = -((40 - gCurrentPinballGame->chargeFillAnimTimer) * 16) / 40;
|
||||
sp0[2] = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->prevCatchCounterValue = 13;
|
||||
gCurrentPinballGame->catchCounterValue = 13;
|
||||
index = 13;
|
||||
gCurrentPinballGame->catchCounterSlideTimer = 0;
|
||||
gCurrentPinballGame->catchCounterSlideOffsetY = 120;
|
||||
gCurrentPinballGame->catchCounterBlinkTimer = 60;
|
||||
gCurrentPinballGame->prevChargeFillValue = 13;
|
||||
gCurrentPinballGame->chargeFillValue = 13;
|
||||
chargeLevelIx = 13;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer = 0;
|
||||
gCurrentPinballGame->chargeIndicatorYOffset = 120;
|
||||
gCurrentPinballGame->fullChargeIndicatorBlinkTimer = 60;
|
||||
}
|
||||
|
||||
DmaCopy16(3, gCatchCounterDigitTilesGfx[index], (void *)0x06010AE0, 0x80);
|
||||
DmaCopy16(3, gChargeFillIndicator_Gfx[chargeLevelIx], (void *)0x06010AE0, 0x80);
|
||||
}
|
||||
else
|
||||
{
|
||||
DmaCopy16(3, gCatchCounterDigitTilesGfx[gCurrentPinballGame->catchCounterValue], (void *)0x06010AE0, 0x80);
|
||||
gCurrentPinballGame->prevCatchCounterValue = gCurrentPinballGame->catchCounterValue;
|
||||
DmaCopy16(3, gChargeFillIndicator_Gfx[gCurrentPinballGame->chargeFillValue], (void *)0x06010AE0, 0x80);
|
||||
gCurrentPinballGame->prevChargeFillValue = gCurrentPinballGame->chargeFillValue;
|
||||
}
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->catchCounterSlideTimer)
|
||||
if (gCurrentPinballGame->fullChargeSlideAnimTimer)
|
||||
{
|
||||
gCurrentPinballGame->catchCounterSlideTimer--;
|
||||
group->baseY = 80 + gCurrentPinballGame->catchCounterSlideOffsetY;
|
||||
if (gCurrentPinballGame->catchCounterSlideTimer < 20)
|
||||
gCurrentPinballGame->catchCounterScaleY = (gCurrentPinballGame->catchCounterSlideTimer * 12) + 16;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer--;
|
||||
group->baseY = 80 + gCurrentPinballGame->chargeIndicatorYOffset;
|
||||
if (gCurrentPinballGame->fullChargeSlideAnimTimer < 20)
|
||||
gCurrentPinballGame->chargeIndicatorScaleY = (gCurrentPinballGame->fullChargeSlideAnimTimer * 12) + 16;
|
||||
}
|
||||
else
|
||||
{
|
||||
group->baseY = 180;
|
||||
}
|
||||
|
||||
group->baseX = 119 + gCurrentPinballGame->catchCounterXShift;
|
||||
SetMatrixScale(gCurrentPinballGame->catchCounterAnimState, gCurrentPinballGame->catchCounterScaleY, 1);
|
||||
group->baseX = 119 + gCurrentPinballGame->chargeIndicatorXOffset;
|
||||
SetMatrixScale(gCurrentPinballGame->chargeIndicatorScaleX, gCurrentPinballGame->chargeIndicatorScaleY, 1);
|
||||
for (i = 0; i < 3; i++)
|
||||
{
|
||||
oamSimple = &group->oam[i];
|
||||
|
|
@ -1715,25 +1717,25 @@ void InitEggMode(void)
|
|||
{
|
||||
gCurrentPinballGame->boardSubState = 0;
|
||||
gCurrentPinballGame->stageTimer = 0;
|
||||
gCurrentPinballGame->modeTimeRemaining = 1800;
|
||||
gCurrentPinballGame->saverTimeRemaining = 1800;
|
||||
gCurrentPinballGame->creatureHitCount = 0;
|
||||
gCurrentPinballGame->creatureVelX = 0;
|
||||
gCurrentPinballGame->creatureVelY = 0;
|
||||
gCurrentPinballGame->walkMonXVelocity = 0;
|
||||
gCurrentPinballGame->walkMonYVelocity = 0;
|
||||
if (gMain.selectedField == FIELD_RUBY)
|
||||
{
|
||||
gCurrentPinballGame->catchCreatureX = 750;
|
||||
gCurrentPinballGame->catchCreatureY = 1040;
|
||||
gCurrentPinballGame->walkMonXPos = 750;
|
||||
gCurrentPinballGame->walkMonYPos = 1040;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->catchCreatureX = 1960;
|
||||
gCurrentPinballGame->catchCreatureY = 300;
|
||||
gCurrentPinballGame->walkMonXPos = 1960;
|
||||
gCurrentPinballGame->walkMonYPos = 300;
|
||||
}
|
||||
|
||||
gCurrentPinballGame->creatureWaypointIndex = 0;
|
||||
gCurrentPinballGame->waypointSubTimer = 0;
|
||||
gCurrentPinballGame->creatureVelX = 0;
|
||||
gCurrentPinballGame->creatureVelY = 0;
|
||||
gCurrentPinballGame->walkMonXVelocity = 0;
|
||||
gCurrentPinballGame->walkMonYVelocity = 0;
|
||||
gCurrentPinballGame->creatureHitCooldown = 0;
|
||||
gCurrentPinballGame->captureFlashTimer = 0;
|
||||
}
|
||||
|
|
@ -1779,8 +1781,8 @@ void UpdateEggMode(void)
|
|||
{
|
||||
gCurrentPinballGame->creatureWaypointIndex = 0;
|
||||
gCurrentPinballGame->boardSubState = 3;
|
||||
gCurrentPinballGame->creatureVelX = 0;
|
||||
gCurrentPinballGame->creatureVelY = 0;
|
||||
gCurrentPinballGame->walkMonXVelocity = 0;
|
||||
gCurrentPinballGame->walkMonYVelocity = 0;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->creatureWaypointIndex == 12)
|
||||
|
|
@ -1797,13 +1799,13 @@ void UpdateEggMode(void)
|
|||
|
||||
if (gCurrentPinballGame->creatureWaypointIndex == 12)
|
||||
{
|
||||
gCurrentPinballGame->creatureVelX = -8;
|
||||
gCurrentPinballGame->creatureVelY = -30;
|
||||
gCurrentPinballGame->walkMonXVelocity = -8;
|
||||
gCurrentPinballGame->walkMonYVelocity = -30;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->creatureVelX = 0;
|
||||
gCurrentPinballGame->creatureVelY = 0;
|
||||
gCurrentPinballGame->walkMonXVelocity = 0;
|
||||
gCurrentPinballGame->walkMonYVelocity = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -1813,8 +1815,8 @@ void UpdateEggMode(void)
|
|||
gCurrentPinballGame->waypointSubTimer = 0;
|
||||
gCurrentPinballGame->creatureWaypointIndex = 10;
|
||||
gCurrentPinballGame->boardSubState = 2;
|
||||
gCurrentPinballGame->creatureVelX = 0;
|
||||
gCurrentPinballGame->creatureVelY = 0;
|
||||
gCurrentPinballGame->walkMonXVelocity = 0;
|
||||
gCurrentPinballGame->walkMonYVelocity = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1823,13 +1825,13 @@ void UpdateEggMode(void)
|
|||
var1 = gEggHatchAnimData[gCurrentPinballGame->creatureWaypointIndex][2];
|
||||
if (gCurrentPinballGame->creatureWaypointIndex == 12)
|
||||
{
|
||||
gCurrentPinballGame->creatureVelY += 2;
|
||||
gCurrentPinballGame->catchCreatureX += gCurrentPinballGame->creatureVelX;
|
||||
gCurrentPinballGame->catchCreatureY += gCurrentPinballGame->creatureVelY;
|
||||
gCurrentPinballGame->walkMonYVelocity += 2;
|
||||
gCurrentPinballGame->walkMonXPos += gCurrentPinballGame->walkMonXVelocity;
|
||||
gCurrentPinballGame->walkMonYPos += gCurrentPinballGame->walkMonYVelocity;
|
||||
}
|
||||
|
||||
group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset;
|
||||
group->baseX = gCurrentPinballGame->walkMonXPos / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->walkMonYPos / 10 - gCurrentPinballGame->cameraYOffset;
|
||||
DmaCopy16(3, gCatchSpriteFrameBuffer[var0], (void *)0x060112A0, 0x120);
|
||||
DmaCopy16(3, gCatchSpritePaletteBuffer, (void *)0x050003A0, 0x20);
|
||||
for (i = 0; i < 4; i++)
|
||||
|
|
@ -1859,8 +1861,8 @@ void UpdateEggMode(void)
|
|||
}
|
||||
else if (gCurrentPinballGame->waypointSubTimer == 240)
|
||||
{
|
||||
gCurrentPinballGame->catchCreatureX = 2260;
|
||||
gCurrentPinballGame->catchCreatureY = 740;
|
||||
gCurrentPinballGame->walkMonXPos = 2260;
|
||||
gCurrentPinballGame->walkMonYPos = 740;
|
||||
gCurrentPinballGame->creatureWaypointIndex = 0;
|
||||
priority = 2;
|
||||
var0 = 0;
|
||||
|
|
@ -1868,8 +1870,8 @@ void UpdateEggMode(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
tempVec.x = gSapphireEggWaypoints[gCurrentPinballGame->creatureWaypointIndex].x - 120 - gCurrentPinballGame->catchCreatureX;
|
||||
tempVec.y = gSapphireEggWaypoints[gCurrentPinballGame->creatureWaypointIndex].y - 160 - gCurrentPinballGame->catchCreatureY;
|
||||
tempVec.x = gSapphireEggWaypoints[gCurrentPinballGame->creatureWaypointIndex].x - 120 - gCurrentPinballGame->walkMonXPos;
|
||||
tempVec.y = gSapphireEggWaypoints[gCurrentPinballGame->creatureWaypointIndex].y - 160 - gCurrentPinballGame->walkMonYPos;
|
||||
xx = tempVec.x * tempVec.x;
|
||||
yy = tempVec.y * tempVec.y;
|
||||
squaredMagnitude = xx + yy;
|
||||
|
|
@ -1892,8 +1894,8 @@ void UpdateEggMode(void)
|
|||
tempVec2.y = -(Sin(angle) * 7) / 20000;
|
||||
}
|
||||
|
||||
gCurrentPinballGame->catchCreatureX += tempVec2.x;
|
||||
gCurrentPinballGame->catchCreatureY += tempVec2.y;
|
||||
gCurrentPinballGame->walkMonXPos += tempVec2.x;
|
||||
gCurrentPinballGame->walkMonYPos += tempVec2.y;
|
||||
if (squaredMagnitude < 2500)
|
||||
{
|
||||
if (gCurrentPinballGame->creatureWaypointIndex < 6)
|
||||
|
|
@ -1904,8 +1906,8 @@ void UpdateEggMode(void)
|
|||
{
|
||||
gCurrentPinballGame->creatureWaypointIndex = 3;
|
||||
gCurrentPinballGame->boardSubState = 3;
|
||||
gCurrentPinballGame->creatureVelX = 0;
|
||||
gCurrentPinballGame->creatureVelY = 0;
|
||||
gCurrentPinballGame->walkMonXVelocity = 0;
|
||||
gCurrentPinballGame->walkMonYVelocity = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1922,8 +1924,8 @@ void UpdateEggMode(void)
|
|||
|
||||
DmaCopy16(3, gCatchSpriteFrameBuffer[var0], (void *)0x060112A0, 0x120);
|
||||
gCurrentPinballGame->waypointSubTimer++;
|
||||
group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset;
|
||||
group->baseX = gCurrentPinballGame->walkMonXPos / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->walkMonYPos / 10 - gCurrentPinballGame->cameraYOffset;
|
||||
if (group->baseY > 180)
|
||||
group->baseY = 180;
|
||||
else if (group->baseY < -30)
|
||||
|
|
@ -1938,8 +1940,8 @@ void UpdateEggMode(void)
|
|||
}
|
||||
break;
|
||||
case 3:
|
||||
tempVec.x = gEggWalkPathWaypoints[gMain.selectedField][gCurrentPinballGame->creatureWaypointIndex].x - 120 - gCurrentPinballGame->catchCreatureX;
|
||||
tempVec.y = gEggWalkPathWaypoints[gMain.selectedField][gCurrentPinballGame->creatureWaypointIndex].y - 160 - gCurrentPinballGame->catchCreatureY;
|
||||
tempVec.x = gEggWalkPathWaypoints[gMain.selectedField][gCurrentPinballGame->creatureWaypointIndex].x - 120 - gCurrentPinballGame->walkMonXPos;
|
||||
tempVec.y = gEggWalkPathWaypoints[gMain.selectedField][gCurrentPinballGame->creatureWaypointIndex].y - 160 - gCurrentPinballGame->walkMonYPos;
|
||||
xx = tempVec.x * tempVec.x;
|
||||
yy = tempVec.y * tempVec.y;
|
||||
squaredMagnitude = xx + yy;
|
||||
|
|
@ -1962,8 +1964,8 @@ void UpdateEggMode(void)
|
|||
var0 = gAngleToDirectionTable[angle / 0x2000] + (gMain.systemFrameCount % 32) / 8 - ((gMain.systemFrameCount % 32) / 24) * 2;
|
||||
}
|
||||
|
||||
gCurrentPinballGame->catchCreatureX += tempVec2.x;
|
||||
gCurrentPinballGame->catchCreatureY += tempVec2.y;
|
||||
gCurrentPinballGame->walkMonXPos += tempVec2.x;
|
||||
gCurrentPinballGame->walkMonYPos += tempVec2.y;
|
||||
}
|
||||
|
||||
if (squaredMagnitude < 2500)
|
||||
|
|
@ -1998,8 +2000,8 @@ void UpdateEggMode(void)
|
|||
priority = 1;
|
||||
}
|
||||
|
||||
group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset;;
|
||||
group->baseX = gCurrentPinballGame->walkMonXPos / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->walkMonYPos / 10 - gCurrentPinballGame->cameraYOffset;;
|
||||
if (group->baseY > 180)
|
||||
group->baseY = 180;
|
||||
else if (group->baseY < -30)
|
||||
|
|
@ -2020,8 +2022,8 @@ void UpdateEggMode(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
tempVec.x = gCurrentPinballGame->ball->positionQ0.x - (gCurrentPinballGame->catchCreatureX / 10 + 12);
|
||||
tempVec.y = gCurrentPinballGame->ball->positionQ0.y - (gCurrentPinballGame->catchCreatureY / 10 + 14);
|
||||
tempVec.x = gCurrentPinballGame->ball->positionQ0.x - (gCurrentPinballGame->walkMonXPos / 10 + 12);
|
||||
tempVec.y = gCurrentPinballGame->ball->positionQ0.y - (gCurrentPinballGame->walkMonYPos / 10 + 14);
|
||||
xx = tempVec.x * tempVec.x;
|
||||
yy = tempVec.y * tempVec.y;
|
||||
squaredMagnitude = xx + yy;
|
||||
|
|
@ -2033,7 +2035,7 @@ void UpdateEggMode(void)
|
|||
if (gCurrentPinballGame->creatureHitCount > 1)
|
||||
gCurrentPinballGame->boardSubState = 4;
|
||||
|
||||
m4aSongNumStart(SE_UNKNOWN_0x75);
|
||||
m4aSongNumStart(SE_PICHU_IN_POSITION_CHIRP);
|
||||
angle2 = ArcTan2(-gCurrentPinballGame->ball->velocity.x, gCurrentPinballGame->ball->velocity.y);
|
||||
if (gCurrentPinballGame->creatureHitCount > 1)
|
||||
{
|
||||
|
|
@ -2058,14 +2060,14 @@ void UpdateEggMode(void)
|
|||
DmaCopy16(3, &gBallUpgradeTilesGfx[(gCurrentPinballGame->ballUpgradeType * 8 + 4) * 0x40], (void *)0x06016760, 0x80);
|
||||
gCurrentPinballGame->captureSequenceFrame = 0;
|
||||
gCurrentPinballGame->captureState = 2;
|
||||
gCurrentPinballGame->catchTargetX = gCurrentPinballGame->catchCreatureX / 10 + 8;
|
||||
gCurrentPinballGame->catchTargetY = gCurrentPinballGame->catchCreatureY / 10 - 31;
|
||||
gCurrentPinballGame->catchTargetX = gCurrentPinballGame->walkMonXPos / 10 + 8;
|
||||
gCurrentPinballGame->catchTargetY = gCurrentPinballGame->walkMonYPos / 10 - 31;
|
||||
for (i = 0; i < 6; i++)
|
||||
gCurrentPinballGame->hatchTilePalette[i] = 13;
|
||||
|
||||
gCurrentPinballGame->boardSubState++;
|
||||
group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset;
|
||||
group->baseX = gCurrentPinballGame->walkMonXPos / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->walkMonYPos / 10 - gCurrentPinballGame->cameraYOffset;
|
||||
if (group->baseY > 180)
|
||||
group->baseY = 180;
|
||||
|
||||
|
|
@ -2088,8 +2090,8 @@ void UpdateEggMode(void)
|
|||
|
||||
if (group->available)
|
||||
{
|
||||
group->baseX = gCurrentPinballGame->catchCreatureX / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->catchCreatureY / 10 - gCurrentPinballGame->cameraYOffset;
|
||||
group->baseX = gCurrentPinballGame->walkMonXPos / 10 - gCurrentPinballGame->cameraXOffset;
|
||||
group->baseY = gCurrentPinballGame->walkMonYPos / 10 - gCurrentPinballGame->cameraYOffset;
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
oamSimple = &group->oam[i];
|
||||
|
|
@ -2620,7 +2622,7 @@ void UpdateAreaRoulette(void)
|
|||
gCurrentPinballGame->rouletteInitialSpeed = gCurrentPinballGame->rouletteSpinSpeed;
|
||||
gCurrentPinballGame->sapphirePondFlag = 1;
|
||||
gCurrentPinballGame->launcherCharging = 1;
|
||||
gCurrentPinballGame->modeTimeRemaining = 3600;
|
||||
gCurrentPinballGame->saverTimeRemaining = 3600;
|
||||
gCurrentPinballGame->rubyPondState = RUBY_POND_STATE_CHINCHOU_COUNTERCLOCKWISE;
|
||||
}
|
||||
}
|
||||
|
|
@ -2828,7 +2830,7 @@ void InitTravelMode(void)
|
|||
gCurrentPinballGame->boardModeType = 2;
|
||||
gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 3600;
|
||||
gCurrentPinballGame->timerBonus = 0;
|
||||
gCurrentPinballGame->modeTimeRemaining = 1800;
|
||||
gCurrentPinballGame->saverTimeRemaining = 1800;
|
||||
DmaCopy16(3, gDefaultBallPalette, (void *)0x05000180, 0x20);
|
||||
}
|
||||
|
||||
|
|
@ -3040,7 +3042,7 @@ void InitEvolutionMode(void)
|
|||
gCurrentPinballGame->boardModeType = 2;
|
||||
gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 7200;
|
||||
gCurrentPinballGame->timerBonus = 0;
|
||||
gCurrentPinballGame->modeTimeRemaining = 3600;
|
||||
gCurrentPinballGame->saverTimeRemaining = 3600;
|
||||
if (gCurrentPinballGame->currentSpecies == SPECIES_WURMPLE)
|
||||
{
|
||||
gCurrentPinballGame->evoItemGfxIndex = 0;
|
||||
|
|
@ -3517,11 +3519,11 @@ void InitCatchEmMode(void)
|
|||
|
||||
if (gCurrentPinballGame->catchEmModeStartCount == 0)
|
||||
{
|
||||
gCurrentPinballGame->modeTimeRemaining = 6000;
|
||||
gCurrentPinballGame->saverTimeRemaining = 6000;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->modeTimeRemaining = 4200;
|
||||
gCurrentPinballGame->saverTimeRemaining = 4200;
|
||||
}
|
||||
gCurrentPinballGame->catchEmModeStartCount++;
|
||||
|
||||
|
|
|
|||
|
|
@ -272,7 +272,7 @@ void InitJirachiBonus(void)
|
|||
gCurrentPinballGame->jirachiTagTimer[1] = 10;
|
||||
gCurrentPinballGame->jirachiTagTimer[2] = 20;
|
||||
gCurrentPinballGame->jirachiTagTimer[3] = 30;
|
||||
gCurrentPinballGame->modeTimeRemaining = 3240;
|
||||
gCurrentPinballGame->saverTimeRemaining = 3240;
|
||||
gCurrentPinballGame->allHolesLit = 0;
|
||||
gCurrentPinballGame->holeIndicators[0] = 0;
|
||||
gCurrentPinballGame->holeIndicators[1] = gCurrentPinballGame->holeIndicators[0];
|
||||
|
|
@ -1247,7 +1247,7 @@ void ProcessRouletteOutcome(void)
|
|||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
gCurrentPinballGame->modeTimeRemaining = (gCurrentPinballGame->rouletteOutcomeId + 1) * 1800;
|
||||
gCurrentPinballGame->saverTimeRemaining = (gCurrentPinballGame->rouletteOutcomeId + 1) * 1800;
|
||||
break;
|
||||
case 3:
|
||||
if (gCurrentPinballGame->ballCatchState == 3)
|
||||
|
|
@ -1265,15 +1265,15 @@ void ProcessRouletteOutcome(void)
|
|||
{
|
||||
gCurrentPinballGame->pikaChargeTarget = 168;
|
||||
gCurrentPinballGame->pikaChargeProgress = 168;
|
||||
gCurrentPinballGame->prevCatchCounterValue = 13;
|
||||
gCurrentPinballGame->catchCounterValue = 13;
|
||||
gCurrentPinballGame->catchCounterSlideTimer = 0;
|
||||
gCurrentPinballGame->catchCounterSlideOffsetY = 120;
|
||||
gCurrentPinballGame->catchCounterBlinkTimer = 60;
|
||||
gCurrentPinballGame->prevChargeFillValue = 13;
|
||||
gCurrentPinballGame->chargeFillValue = 13;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer = 0;
|
||||
gCurrentPinballGame->chargeIndicatorYOffset = 120;
|
||||
gCurrentPinballGame->fullChargeIndicatorBlinkTimer = 60;
|
||||
DmaCopy16(3, gPikachuSaverTilesGfx, (void *)0x06010600, 0x180);
|
||||
gCurrentPinballGame->outLanePikaPosition = 2;
|
||||
gMain.fieldSpriteGroups[41]->available = 0;
|
||||
gCurrentPinballGame->pikaSaverTimer = 1;
|
||||
gCurrentPinballGame->pichuEntranceTimer = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -1289,19 +1289,19 @@ void ProcessRouletteOutcome(void)
|
|||
gCurrentPinballGame->bannerGfxIndex = 0;
|
||||
gCurrentPinballGame->bannerActive = 1;
|
||||
gCurrentPinballGame->bannerPreserveBallState = 0;
|
||||
gCurrentPinballGame->pikaRescuePath = 1;
|
||||
gCurrentPinballGame->pikaSaverTimer = 800;
|
||||
gCurrentPinballGame->pichuWalkMode = 1;
|
||||
gCurrentPinballGame->pichuEntranceTimer = 800;
|
||||
gCurrentPinballGame->outLanePikaPosition = 0;
|
||||
gCurrentPinballGame->pikaChargeTarget = 168;
|
||||
gCurrentPinballGame->pikaChargeProgress = 168;
|
||||
gCurrentPinballGame->prevCatchCounterValue = 13;
|
||||
gCurrentPinballGame->catchCounterValue = 13;
|
||||
gCurrentPinballGame->catchCounterSlideTimer = 0;
|
||||
gCurrentPinballGame->catchCounterSlideOffsetY = 120;
|
||||
gCurrentPinballGame->catchCounterBlinkTimer = 60;
|
||||
gCurrentPinballGame->prevChargeFillValue = 13;
|
||||
gCurrentPinballGame->chargeFillValue = 13;
|
||||
gCurrentPinballGame->fullChargeSlideAnimTimer = 0;
|
||||
gCurrentPinballGame->chargeIndicatorYOffset = 120;
|
||||
gCurrentPinballGame->fullChargeIndicatorBlinkTimer = 60;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->pikaSaverTimer)
|
||||
if (gCurrentPinballGame->pichuEntranceTimer)
|
||||
{
|
||||
if (gCurrentPinballGame->outcomeFrameCounter >= 176)
|
||||
gCurrentPinballGame->outcomeFrameCounter = 176;
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "m4a.h"
|
||||
#include "main.h"
|
||||
#include "constants/bg_music.h"
|
||||
#include "constants/main_board.h"
|
||||
|
||||
extern const s16 gPelipperIdleFrameIndices[];
|
||||
extern const s16 gPelipperSwallowAnimData[][3];
|
||||
|
|
@ -50,7 +51,7 @@ extern const u8 gLifeCountDigit_Gfx[][0x40];
|
|||
extern const u8 gOneUpSpritePalette[];
|
||||
|
||||
extern struct SongHeader se_unk_fc;
|
||||
extern struct SongHeader se_unk_7a;
|
||||
extern struct SongHeader se_pika_full_charge_1_up;
|
||||
|
||||
extern u8 gPaletteFadeRGBCache[][3];
|
||||
|
||||
|
|
@ -164,7 +165,7 @@ void AnimateOneUpSprite(void)
|
|||
|
||||
if (gCurrentPinballGame->oneUpAnimTimer == 58)
|
||||
{
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_unk_7a);
|
||||
MPlayStart(&gMPlayInfo_SE1, &se_pika_full_charge_1_up);
|
||||
if (gCurrentPinballGame->numLives < 9)
|
||||
gCurrentPinballGame->numLives++;
|
||||
}
|
||||
|
|
@ -1261,7 +1262,7 @@ void UpdateZigzagoonEntity(void)
|
|||
gCurrentPinballGame->zigzagoonOamFrame = 1;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->ballCatchState != 4)
|
||||
if (gCurrentPinballGame->ballCatchState != TRAP_CENTER_HOLE)
|
||||
gCurrentPinballGame->zigzagoonShockWallActive = 0;
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -1511,7 +1512,7 @@ void UpdateSapphireBumperLogic(void)
|
|||
}
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->ballCatchState != 3)
|
||||
if (gCurrentPinballGame->ballCatchState != TRAP_EVO_SHOP_HOLE)
|
||||
{
|
||||
if (gCurrentPinballGame->sapphireBumperLitCountdown)
|
||||
gCurrentPinballGame->sapphireBumperLitCountdown--;
|
||||
|
|
|
|||
|
|
@ -138,13 +138,13 @@ void UpdateSapphireHoleLetterSystem(void)
|
|||
|
||||
if (gCurrentPinballGame->holeLetterCount < 6)
|
||||
{
|
||||
gCurrentPinballGame->catchCreatureY = 280;
|
||||
gCurrentPinballGame->walkMonYPos = 280;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->catchCreatureY += 6;
|
||||
gCurrentPinballGame->walkMonYPos += 6;
|
||||
if (gCurrentPinballGame->holeLetterSystemState == 4)
|
||||
gCurrentPinballGame->catchCreatureY = gCurrentPinballGame->catchCreatureY + 20;
|
||||
gCurrentPinballGame->walkMonYPos = gCurrentPinballGame->walkMonYPos + 20;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
|
|
|
|||
|
|
@ -65,8 +65,8 @@ void UpdateRubyBoardAnimations(void)
|
|||
if (gCurrentPinballGame->hudSpriteBaseY > 202)
|
||||
DrawRubyModeTimerDisplay();
|
||||
|
||||
if (gCurrentPinballGame->modeTimeRemaining && gCurrentPinballGame->ballCatchState == 0)
|
||||
gCurrentPinballGame->modeTimeRemaining--;
|
||||
if (gCurrentPinballGame->saverTimeRemaining && gCurrentPinballGame->ballCatchState == 0)
|
||||
gCurrentPinballGame->saverTimeRemaining--;
|
||||
}
|
||||
|
||||
void AnimateRubySlingshotTimer(void)
|
||||
|
|
@ -195,26 +195,26 @@ void DrawRubyModeTimerDisplay(void)
|
|||
const u8 **src;
|
||||
const u8 **dest;
|
||||
|
||||
if (gCurrentPinballGame->modeTimeRemaining > 300)
|
||||
if (gCurrentPinballGame->saverTimeRemaining > 300)
|
||||
{
|
||||
gCurrentPinballGame->modeTimerDisplayIndex = 1;
|
||||
gCurrentPinballGame->saverLit = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gCurrentPinballGame->modeTimeRemaining)
|
||||
if (gCurrentPinballGame->saverTimeRemaining)
|
||||
{
|
||||
if (gCurrentPinballGame->ballCatchState)
|
||||
gCurrentPinballGame->modeTimerDisplayIndex = 1;
|
||||
gCurrentPinballGame->saverLit = 1;
|
||||
else
|
||||
gCurrentPinballGame->modeTimerDisplayIndex = (gMain.fieldFrameCount % 16) / 8;
|
||||
gCurrentPinballGame->saverLit = (gMain.fieldFrameCount % 16) / 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->modeTimerDisplayIndex = 0;
|
||||
gCurrentPinballGame->saverLit = 0;
|
||||
}
|
||||
}
|
||||
|
||||
src = gRubyModeTimerTilePointers[gCurrentPinballGame->modeTimerDisplayIndex];
|
||||
src = gRubyModeTimerTilePointers[gCurrentPinballGame->saverLit];
|
||||
dest = gRubyModeTimerTilePointers[2];
|
||||
DmaCopy16(3, src[0], dest[0], 0xC0);
|
||||
DmaCopy16(3, src[1], dest[1], 0xC0);
|
||||
|
|
|
|||
|
|
@ -308,8 +308,8 @@ void UpdateSapphireBoardAnimations(void)
|
|||
if (gCurrentPinballGame->hudSpriteBaseY >= 8 && gCurrentPinballGame->hudSpriteBaseY < 182)
|
||||
AnimateBumperHitCounter();
|
||||
|
||||
if (gCurrentPinballGame->modeTimeRemaining && gCurrentPinballGame->ballCatchState == 0)
|
||||
gCurrentPinballGame->modeTimeRemaining--;
|
||||
if (gCurrentPinballGame->saverTimeRemaining && gCurrentPinballGame->ballCatchState == 0)
|
||||
gCurrentPinballGame->saverTimeRemaining--;
|
||||
}
|
||||
|
||||
void DrawSapphireProgressDigits(void)
|
||||
|
|
@ -456,23 +456,23 @@ void DrawSapphireModeTimerDisplay(void)
|
|||
const u8 **src;
|
||||
const u8 **dest;
|
||||
|
||||
if (gCurrentPinballGame->modeTimeRemaining > 300)
|
||||
if (gCurrentPinballGame->saverTimeRemaining > 300)
|
||||
{
|
||||
gCurrentPinballGame->modeTimerDisplayIndex = 1;
|
||||
gCurrentPinballGame->saverLit = 1;
|
||||
}
|
||||
else if (gCurrentPinballGame->modeTimeRemaining)
|
||||
else if (gCurrentPinballGame->saverTimeRemaining)
|
||||
{
|
||||
if (gCurrentPinballGame->ballCatchState)
|
||||
gCurrentPinballGame->modeTimerDisplayIndex = 1;
|
||||
gCurrentPinballGame->saverLit = 1;
|
||||
else
|
||||
gCurrentPinballGame->modeTimerDisplayIndex = (gMain.fieldFrameCount & 0xF) / 8;
|
||||
gCurrentPinballGame->saverLit = (gMain.fieldFrameCount & 0xF) / 8;
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->modeTimerDisplayIndex = 0;
|
||||
gCurrentPinballGame->saverLit = 0;
|
||||
}
|
||||
|
||||
src = gSapphireModeTimerDisplayTilePtrs[gCurrentPinballGame->modeTimerDisplayIndex];
|
||||
src = gSapphireModeTimerDisplayTilePtrs[gCurrentPinballGame->saverLit];
|
||||
dest = gSapphireModeTimerDisplayTilePtrs[2];
|
||||
DmaCopy16(3, src[0], dest[0], 0xE0);
|
||||
DmaCopy16(3, src[1], dest[1], 0xE0);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user