summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/battle_transition.h32
-rw-r--r--include/bg.h2
-rw-r--r--include/config.h17
-rw-r--r--include/constants/songs.h931
-rw-r--r--include/field_camera.h1
-rw-r--r--include/field_effect.h1
-rw-r--r--include/gba/gba.h1
-rw-r--r--include/gba/io_reg.h55
-rwxr-xr-xinclude/gba/isagbprint.h50
-rw-r--r--include/global.h2
-rw-r--r--include/overworld.h2
-rw-r--r--include/unk_transition.h13
12 files changed, 625 insertions, 482 deletions
diff --git a/include/battle_transition.h b/include/battle_transition.h
index 84b5e37ec..0d6ef3c83 100644
--- a/include/battle_transition.h
+++ b/include/battle_transition.h
@@ -1,12 +1,27 @@
#ifndef GUARD_BATTLE_TRANSITION_H
#define GUARD_BATTLE_TRANSITION_H
-void sub_8149DFC(u8 a1);
-void BattleTransition_StartOnField(u8 transitionID);
-void BattleTransition_Start(u8 transitionID);
+void TestBattleTransition(u8 transitionId);
+void BattleTransition_StartOnField(u8 transitionId);
+void BattleTransition_Start(u8 transitionId);
bool8 IsBattleTransitionDone(void);
+bool8 FldEff_Pokeball(void);
+void TransitionPhase1_Task_RunFuncs(u8 taskId);
+void sub_8149F58(u16 **a0, u16 **a1);
-// credits for the names go to Dyskinesia and Tetrable
+extern const struct SpritePalette gFieldEffectObjectPaletteInfo10;
+
+enum // TRANSITION_MUGSHOT
+{
+ MUGSHOT_SYDNEY,
+ MUGSHOT_PHOEBE,
+ MUGSHOT_GLACIA,
+ MUGSHOT_DRAKE,
+ MUGSHOT_CHAMPION,
+ MUGSHOTS_COUNT
+};
+
+// credits for the names go to Dyskinesia, Tetrable and Farore
// names are naturally subject to change
#define B_TRANSITION_BLUR 0
@@ -35,10 +50,10 @@ bool8 IsBattleTransitionDone(void);
#define B_TRANSITION_KYOGRE 22
#define B_TRANSITION_GROUDON 23
#define B_TRANSITION_RAYQUAZA 24
-#define B_TRANSITION_25 25
-#define B_TRANSITION_26 26
-#define B_TRANSITION_27 27
-#define B_TRANSITION_28 28
+#define B_TRANSITION_SHRED_SPLIT 25
+#define B_TRANSITION_BLACKHOLE1 26
+#define B_TRANSITION_BLACKHOLE2 27
+#define B_TRANSITION_RECTANGULAR_SPIRAL 28
#define B_TRANSITION_29 29
#define B_TRANSITION_30 30
#define B_TRANSITION_31 31
@@ -52,5 +67,6 @@ bool8 IsBattleTransitionDone(void);
#define B_TRANSITION_39 39
#define B_TRANSITION_40 40
#define B_TRANSITION_41 41
+#define B_TRANSITION_COUNT 42
#endif // GUARD_BATTLE_TRANSITION_H
diff --git a/include/bg.h b/include/bg.h
index 0c6b4ac26..de3897fa4 100644
--- a/include/bg.h
+++ b/include/bg.h
@@ -70,7 +70,7 @@ void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset);
void CopyBgTilemapBufferToVram(u8 bg);
void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height);
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
-void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2);
+void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2);
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height);
void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette);
void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta);
diff --git a/include/config.h b/include/config.h
index 162af3143..318ed39d8 100644
--- a/include/config.h
+++ b/include/config.h
@@ -1,6 +1,23 @@
#ifndef GUARD_CONFIG_H
#define GUARD_CONFIG_H
+// In the Generation 3 games, Asserts were used in various debug builds.
+// Ruby/Sapphire and Emerald do not have these asserts while Fire Red
+// still has them in the ROM. This is because the developers forgot
+// to define NDEBUG before release, however this has been changed as
+// Ruby's actual debug build does not use the AGBPrint features.
+#define NDEBUG
+
+// To enable print debugging, comment out "#define NDEBUG". This allows
+// the various AGBPrint functions to be used. (See include/gba/isagbprint.h).
+// Some emulators support a debug console window: uncomment NoCashGBAPrint()
+// and NoCashGBAPrintf() in libisagbprn.c to use no$gba's own proprietary
+// printing system. Use NoCashGBAPrint() and NoCashGBAPrintf() like you
+// would normally use AGBPrint() and AGBPrintf().
+
+// NOTE: Don't try to enable assert right now as many pointers
+// still exist in defines and WILL likely result in a broken ROM.
+
#define ENGLISH
#ifdef ENGLISH
diff --git a/include/constants/songs.h b/include/constants/songs.h
index fdecff09a..58a8e725c 100644
--- a/include/constants/songs.h
+++ b/include/constants/songs.h
@@ -2,485 +2,488 @@
#define GUARD_CONSTANTS_SONGS_H
#define MUS_DUMMY 0
-#define SE_KAIFUKU 1
-#define SE_PC_LOGIN 2
-#define SE_PC_OFF 3
-#define SE_PC_ON 4
-#define SE_SELECT 5
-#define SE_WIN_OPEN 6
-#define SE_WALL_HIT 7
-#define SE_DOOR 8
-#define SE_KAIDAN 9
-#define SE_DANSA 10
-#define SE_JITENSYA 11
-#define SE_KOUKA_L 12
-#define SE_KOUKA_M 13
-#define SE_KOUKA_H 14
-#define SE_BOWA2 15
-#define SE_POKE_DEAD 16
-#define SE_NIGERU 17
-#define SE_JIDO_DOA 18
-#define SE_NAMINORI 19
-#define SE_BAN 20
-#define SE_PIN 21
-#define SE_BOO 22
-#define SE_BOWA 23
-#define SE_JYUNI 24
-#define SE_A 25
-#define SE_I 26
-#define SE_U 27
-#define SE_E 28
-#define SE_O 29
-#define SE_N 30
-#define SE_SEIKAI 31
-#define SE_HAZURE 32
-#define SE_EXP 33
-#define SE_JITE_PYOKO 34
+#define SE_KAIFUKU 1 // Healing Item
+#define SE_PC_LOGIN 2 // PC Logon
+#define SE_PC_OFF 3 // PC Shutdown
+#define SE_PC_ON 4 // PC Startup
+#define SE_SELECT 5 // Cursor Selection
+#define SE_WIN_OPEN 6 // Start Menu
+#define SE_WALL_HIT 7 // Wall Bump
+#define SE_DOOR 8 // Opening Door
+#define SE_KAIDAN 9 // Stairs
+#define SE_DANSA 10 // Ledge
+#define SE_JITENSYA 11 // Bicycle Bell
+#define SE_KOUKA_L 12 // Not Very Effective
+#define SE_KOUKA_M 13 // Normal Effectiveness
+#define SE_KOUKA_H 14 // Super Effective
+#define SE_BOWA2 15 // Pokémon Withdrawal
+#define SE_POKE_DEAD 16 // Pokémon Fainted
+#define SE_NIGERU 17 // Flee from Wild Battle
+#define SE_JIDO_DOA 18 // Pokémon Center Door
+#define SE_NAMINORI 19 // Briney's Ship
+#define SE_BAN 20 // Bang
+#define SE_PIN 21 // Exclamation Bubble
+#define SE_BOO 22 // Contest Jam
+#define SE_BOWA 23 // Giving Poké Ball to Nurse, Poké Ball Wiggle
+#define SE_JYUNI 24 // Places in Contest Appearing
+#define SE_A 25 // Bard A
+#define SE_I 26 // Bard I
+#define SE_U 27 // Bard U
+#define SE_E 28 // Bard E
+#define SE_O 29 // Bard O
+#define SE_N 30 // Bard N
+#define SE_SEIKAI 31 // Success
+#define SE_HAZURE 32 // Failure
+#define SE_EXP 33 // Exp. Bar
+#define SE_JITE_PYOKO 34 // Bunny Hop
#define SE_MU_PACHI 35
-#define SE_TK_KASYA 36
+#define SE_TK_KASYA 36 // Mossdeep Gym/Trick House Switch
#define SE_FU_ZAKU 37
#define SE_FU_ZAKU2 38
-#define SE_FU_ZUZUZU 39
-#define SE_RU_GASHIN 40
-#define SE_RU_GASYAN 41
-#define SE_RU_BARI 42
-#define SE_RU_HYUU 43
+#define SE_FU_ZUZUZU 39 // Lavaridge Gym Warp
+#define SE_RU_GASHIN 40 // Sootopolis Gym - Stairs Appear
+#define SE_RU_GASYAN 41 // Sootopolis Gym - Ice Breaking
+#define SE_RU_BARI 42 // Sootopolis Gym - Walking on Ice
+#define SE_RU_HYUU 43 // Falling Down
#define SE_KI_GASYAN 44
-#define SE_TK_WARPIN 45
-#define SE_TK_WARPOUT 46
-#define SE_TU_SAA 47
-#define SE_HI_TURUN 48
-#define SE_TRACK_MOVE 49
-#define SE_TRACK_STOP 50
-#define SE_TRACK_HAIKI 51
-#define SE_TRACK_DOOR 52
+#define SE_TK_WARPIN 45 // Warp In
+#define SE_TK_WARPOUT 46 // Warp Out
+#define SE_TU_SAA 47 // Repel
+#define SE_HI_TURUN 48 // Moving Obstacle in Fortree Gym
+#define SE_TRACK_MOVE 49 // Moving Truck
+#define SE_TRACK_STOP 50 // Moving Truck Stop
+#define SE_TRACK_HAIKI 51 // Moving Truck Unload
+#define SE_TRACK_DOOR 52 // Moving Truck Door
#define SE_MOTER 53
#define SE_CARD 54
-#define SE_SAVE 55
-#define SE_KON 56
-#define SE_KON2 57
-#define SE_KON3 58
-#define SE_KON4 59
-#define SE_SUIKOMU 60
-#define SE_NAGERU 61
-#define SE_TOY_C 62
-#define SE_TOY_D 63
-#define SE_TOY_E 64
-#define SE_TOY_F 65
-#define SE_TOY_G 66
-#define SE_TOY_A 67
-#define SE_TOY_B 68
-#define SE_TOY_C1 69
-#define SE_MIZU 70
-#define SE_HASHI 71
-#define SE_DAUGI 72
-#define SE_PINPON 73
-#define SE_FUUSEN1 74
-#define SE_FUUSEN2 75
-#define SE_FUUSEN3 76
-#define SE_TOY_KABE 77
-#define SE_TOY_DANGO 78
-#define SE_DOKU 79
-#define SE_ESUKA 80
-#define SE_T_AME 81
-#define SE_T_AME_E 82
-#define SE_T_OOAME 83
-#define SE_T_OOAME_E 84
-#define SE_T_KOAME 85
-#define SE_T_KOAME_E 86
-#define SE_T_KAMI 87
-#define SE_T_KAMI2 88
-#define SE_ELEBETA 89
-#define SE_HINSI 90
-#define SE_EXPMAX 91
-#define SE_TAMAKORO 92
-#define SE_TAMAKORO_E 93
+#define SE_SAVE 55 // Save
+#define SE_KON 56 // Poké Ball Bounce 1
+#define SE_KON2 57 // Poké Ball Bounce 2
+#define SE_KON3 58 // Poké Ball Bounce 3
+#define SE_KON4 59 // Poké Ball Bounce 4
+#define SE_SUIKOMU 60 // Poké Ball Trade
+#define SE_NAGERU 61 // Poké Ball Throw
+#define SE_TOY_C 62 // Note C
+#define SE_TOY_D 63 // Note D
+#define SE_TOY_E 64 // Note E
+#define SE_TOY_F 65 // Note F
+#define SE_TOY_G 66 // Note G
+#define SE_TOY_A 67 // Note A
+#define SE_TOY_B 68 // Note B
+#define SE_TOY_C1 69 // Note High C
+#define SE_MIZU 70 // Puddle
+#define SE_HASHI 71 // Boardwalk
+#define SE_DAUGI 72 // Slots Credits
+#define SE_PINPON 73 // Ding-dong!
+#define SE_FUUSEN1 74 // Red Balloon
+#define SE_FUUSEN2 75 // Blue Balloon
+#define SE_FUUSEN3 76 // Yellow Balloon
+#define SE_TOY_KABE 77 // Breakable Door
+#define SE_TOY_DANGO 78 // Mud Ball
+#define SE_DOKU 79 // Overworld Poison Damage
+#define SE_ESUKA 80 // Escalator
+#define SE_T_AME 81 // Rain
+#define SE_T_AME_E 82 // Rain Stop
+#define SE_T_OOAME 83 // Heavy Rain
+#define SE_T_OOAME_E 84 // Heavy Rain Stop
+#define SE_T_KOAME 85 // Light Rain
+#define SE_T_KOAME_E 86 // Light Rain Stop
+#define SE_T_KAMI 87 // Thunder
+#define SE_T_KAMI2 88 // Thunder 2
+#define SE_ELEBETA 89 // Elevator
+#define SE_HINSI 90 // Low Health
+#define SE_EXPMAX 91 // Exp. Max
+#define SE_TAMAKORO 92 // Roulette Ball
+#define SE_TAMAKORO_E 93 // Roulette Ball 2
#define SE_BASABASA 94
-#define SE_REGI 95
-#define SE_C_GAJI 96
-#define SE_C_MAKU_U 97
-#define SE_C_MAKU_D 98
+#define SE_REGI 95 // Cash Register
+#define SE_C_GAJI 96 // Contest Hearts
+#define SE_C_MAKU_U 97 // Contest Curtain rise
+#define SE_C_MAKU_D 98 // Contest Curtain fall
#define SE_C_PASI 99
#define SE_C_SYU 100
-#define SE_C_PIKON 101
-#define SE_REAPOKE 102
-#define SE_OP_BASYU 103
-#define SE_BT_START 104
-#define SE_DENDOU 105
-#define SE_JIHANKI 106
-#define SE_TAMA 107
-#define SE_Z_SCROLL 108
-#define SE_Z_PAGE 109
-#define SE_PN_ON 110
-#define SE_PN_OFF 111
-#define SE_Z_SEARCH 112
-#define SE_TAMAGO 113
-#define SE_TB_START 114
-#define SE_TB_KON 115
-#define SE_TB_KARA 116
+#define SE_C_PIKON 101 // Pokémon Appears in Contest
+#define SE_REAPOKE 102 // Shiny Pokémon
+#define SE_OP_BASYU 103 // Opening Movie -> Title Screen whoosh
+#define SE_BT_START 104 // Battle Mugshot whoosh
+#define SE_DENDOU 105 // Audience Cheering
+#define SE_JIHANKI 106 // Vending Machine
+#define SE_TAMA 107 // Orb Used
+#define SE_Z_SCROLL 108 // Pokédex Scrolling
+#define SE_Z_PAGE 109 // Pokédex Page
+#define SE_PN_ON 110 // PokéNav On
+#define SE_PN_OFF 111 // PokéNav Off
+#define SE_Z_SEARCH 112 // Pokédex Search
+#define SE_TAMAGO 113 // Egg hatch
+#define SE_TB_START 114 // Battle - Poké Ball Tray slide in
+#define SE_TB_KON 115 // Battle - Poké Ball Tray ball sound
+#define SE_TB_KARA 116 // Battle - Poké Ball Tray slide out
#define SE_BIDORO 117
-#define SE_W085 118
-#define SE_W085B 119
-#define SE_W231 120
-#define SE_W171 121
-#define SE_W233 122
-#define SE_W233B 123
-#define SE_W145 124
-#define SE_W145B 125
-#define SE_W145C 126
-#define SE_W240 127
-#define SE_W015 128
-#define SE_W081 129
-#define SE_W081B 130
-#define SE_W088 131
-#define SE_W016 132
-#define SE_W016B 133
-#define SE_W003 134
-#define SE_W104 135
-#define SE_W013 136
-#define SE_W196 137
-#define SE_W086 138
-#define SE_W004 139
-#define SE_W025 140
-#define SE_W025B 141
-#define SE_W152 142
-#define SE_W026 143
-#define SE_W172 144
-#define SE_W172B 145
-#define SE_W053 146
-#define SE_W007 147
-#define SE_W092 148
-#define SE_W221 149
-#define SE_W221B 150
-#define SE_W052 151
-#define SE_W036 152
-#define SE_W059 153
-#define SE_W059B 154
-#define SE_W010 155
-#define SE_W011 156
-#define SE_W017 157
-#define SE_W019 158
-#define SE_W028 159
-#define SE_W013B 160
-#define SE_W044 161
-#define SE_W029 162
-#define SE_W057 163
-#define SE_W056 164
-#define SE_W250 165
-#define SE_W030 166
-#define SE_W039 167
-#define SE_W054 168
-#define SE_W077 169
-#define SE_W020 170
-#define SE_W082 171
-#define SE_W047 172
-#define SE_W195 173
-#define SE_W006 174
-#define SE_W091 175
-#define SE_W146 176
-#define SE_W120 177
-#define SE_W153 178
-#define SE_W071B 179
-#define SE_W071 180
-#define SE_W103 181
-#define SE_W062 182
-#define SE_W062B 183
-#define SE_W048 184
-#define SE_W187 185
-#define SE_W118 186
-#define SE_W155 187
-#define SE_W122 188
-#define SE_W060 189
-#define SE_W185 190
-#define SE_W014 191
-#define SE_W043 192
-#define SE_W207 193
-#define SE_W207B 194
-#define SE_W215 195
-#define SE_W109 196
-#define SE_W173 197
-#define SE_W280 198
-#define SE_W202 199
-#define SE_W060B 200
-#define SE_W076 201
-#define SE_W080 202
-#define SE_W100 203
-#define SE_W107 204
-#define SE_W166 205
-#define SE_W129 206
-#define SE_W115 207
-#define SE_W112 208
-#define SE_W197 209
-#define SE_W199 210
-#define SE_W236 211
-#define SE_W204 212
-#define SE_W268 213
-#define SE_W070 214
-#define SE_W063 215
-#define SE_W127 216
-#define SE_W179 217
-#define SE_W151 218
-#define SE_W201 219
-#define SE_W161 220
-#define SE_W161B 221
-#define SE_W227 222
-#define SE_W227B 223
-#define SE_W226 224
-#define SE_W208 225
-#define SE_W213 226
-#define SE_W213B 227
-#define SE_W234 228
-#define SE_W260 229
-#define SE_W328 230
-#define SE_W320 231
-#define SE_W255 232
-#define SE_W291 233
-#define SE_W089 234
-#define SE_W239 235
-#define SE_W230 236
-#define SE_W281 237
-#define SE_W327 238
-#define SE_W287 239
-#define SE_W257 240
-#define SE_W253 241
-#define SE_W258 242
-#define SE_W322 243
-#define SE_W298 244
-#define SE_W287B 245
-#define SE_W114 246
-#define SE_W063B 247
-#define SE_RG_W_DOOR 248
-#define SE_RG_CARD1 249
-#define SE_RG_CARD2 250
-#define SE_RG_CARD3 251
-#define SE_RG_BAG1 252
-#define SE_RG_BAG2 253
+#define SE_W085 118 // Thunderbolt
+#define SE_W085B 119 // Thunderbolt 2
+#define SE_W231 120 // Harden
+#define SE_W171 121 // Nightmare
+#define SE_W233 122 // Vital Throw
+#define SE_W233B 123 // Vital Throw 2
+#define SE_W145 124 // Bubble
+#define SE_W145B 125 // Bubble 2
+#define SE_W145C 126 // Bubble 3
+#define SE_W240 127 // Rain Dance
+#define SE_W015 128 // Cut
+#define SE_W081 129 // String Shot
+#define SE_W081B 130 // String Shot 2
+#define SE_W088 131 // Rock Throw
+#define SE_W016 132 // Gust
+#define SE_W016B 133 // Gust 2
+#define SE_W003 134 // DoubleSlap
+#define SE_W104 135 // Double Team
+#define SE_W013 136 // Razor Wind
+#define SE_W196 137 // Icy Wind
+#define SE_W086 138 // Thunder Wave
+#define SE_W004 139 // Comet Punch
+#define SE_W025 140 // Mega Kick
+#define SE_W025B 141 // Mega Kick 2
+#define SE_W152 142 // Crabhammer
+#define SE_W026 143 // Jump Kick
+#define SE_W172 144 // Flame Wheel
+#define SE_W172B 145 // Flame Wheel 2
+#define SE_W053 146 // Flamethrower
+#define SE_W007 147 // Fire Punch
+#define SE_W092 148 // Toxic
+#define SE_W221 149 // Sacred Fire
+#define SE_W221B 150 // Sacred Fire 2
+#define SE_W052 151 // Ember
+#define SE_W036 152 // Take Down
+#define SE_W059 153 // Blizzard
+#define SE_W059B 154 // Blizzard 2
+#define SE_W010 155 // Scratch
+#define SE_W011 156 // Vicegrip
+#define SE_W017 157 // Wing Attack
+#define SE_W019 158 // Fly
+#define SE_W028 159 // Sand-Attack
+#define SE_W013B 160 // Razor Wind 2
+#define SE_W044 161 // Bite
+#define SE_W029 162 // Headbutt
+#define SE_W057 163 // Surf
+#define SE_W056 164 // Hydro Pump
+#define SE_W250 165 // Whirlpool
+#define SE_W030 166 // Horn Attack
+#define SE_W039 167 // Tail Whip
+#define SE_W054 168 // Mist
+#define SE_W077 169 // PoisonPowder
+#define SE_W020 170 // Bind
+#define SE_W082 171 // Dragon Rage
+#define SE_W047 172 // Sing
+#define SE_W195 173 // Perish Song
+#define SE_W006 174 // Pay Day
+#define SE_W091 175 // Dig
+#define SE_W146 176 // Dizzy Punch
+#define SE_W120 177 // Self-Destruct
+#define SE_W153 178 // Explosion
+#define SE_W071B 179 // Absorb 2
+#define SE_W071 180 // Absorb
+#define SE_W103 181 // Screech
+#define SE_W062 182 // BubbleBeam
+#define SE_W062B 183 // BubbleBeam 2
+#define SE_W048 184 // Supersonic
+#define SE_W187 185 // Belly Drum
+#define SE_W118 186 // Metronome
+#define SE_W155 187 // Bonemerang
+#define SE_W122 188 // Lick
+#define SE_W060 189 // Psybeam
+#define SE_W185 190 // Faint Attack
+#define SE_W014 191 // Swords Dance
+#define SE_W043 192 // Leer
+#define SE_W207 193 // Swagger
+#define SE_W207B 194 // Swagger 2
+#define SE_W215 195 // Heal Bell
+#define SE_W109 196 // Confuse Ray
+#define SE_W173 197 // Snore
+#define SE_W280 198 // Brick Break
+#define SE_W202 199 // Giga Drain
+#define SE_W060B 200 // Psybeam 2
+#define SE_W076 201 // SolarBeam
+#define SE_W080 202 // Petal Dance
+#define SE_W100 203 // Teleport
+#define SE_W107 204 // Minimize
+#define SE_W166 205 // Sketch
+#define SE_W129 206 // Swift
+#define SE_W115 207 // Reflect
+#define SE_W112 208 // Barrier
+#define SE_W197 209 // Detect
+#define SE_W199 210 // Lock-On
+#define SE_W236 211 // Moonlight
+#define SE_W204 212 // Charm
+#define SE_W268 213 // Charge
+#define SE_W070 214 // Strength
+#define SE_W063 215 // Hyper Beam
+#define SE_W127 216 // Waterfall
+#define SE_W179 217 // Reversal
+#define SE_W151 218 // Acid Armor
+#define SE_W201 219 // Sandstorm
+#define SE_W161 220 // Tri-Attack
+#define SE_W161B 221 // Tri-Attack 2
+#define SE_W227 222 // Encore
+#define SE_W227B 223 // Encore 2
+#define SE_W226 224 // Baton Pass
+#define SE_W208 225 // Milk Drink
+#define SE_W213 226 // Attract
+#define SE_W213B 227 // Attract 2
+#define SE_W234 228 // Morning Sun
+#define SE_W260 229 // Flatter
+#define SE_W328 230 // Sand Tomb
+#define SE_W320 231 // GrassWhistle
+#define SE_W255 232 // Spit Up
+#define SE_W291 233 // Dive
+#define SE_W089 234 // Earthquake
+#define SE_W239 235 // Twister
+#define SE_W230 236 // Sweet Scent
+#define SE_W281 237 // Yawn
+#define SE_W327 238 // Sky Uppercut
+#define SE_W287 239 // Stat Increased
+#define SE_W257 240 // Heat Wave
+#define SE_W253 241 // Uproar
+#define SE_W258 242 // Hail
+#define SE_W322 243 // Cosmic Power
+#define SE_W298 244 // Teeter Dance
+#define SE_W287B 245 // Stat Decreased
+#define SE_W114 246 // Haze
+#define SE_W063B 247 // Hyper Beam 2
+// FRLG SFX below
+#define SE_RG_W_DOOR 248 // Door
+#define SE_RG_CARD1 249 // Trainer Card 1
+#define SE_RG_CARD2 250 // Trainer Card 2
+#define SE_RG_CARD3 251 // Trainer Card 3
+#define SE_RG_BAG1 252 // Bag Scroll
+#define SE_RG_BAG2 253 // Bag Pocket Change
#define SE_RG_GETTING 254
-#define SE_RG_SHOP 255
-#define SE_RG_KITEKI 256
-#define SE_RG_HELP_OP 257
-#define SE_RG_HELP_CL 258
-#define SE_RG_HELP_NG 259
-#define SE_RG_DEOMOV 260
+#define SE_RG_SHOP 255 // Cash Register
+#define SE_RG_KITEKI 256 // S.S. Anne Horn
+#define SE_RG_HELP_OP 257 // Help Menu Open
+#define SE_RG_HELP_CL 258 // Help Menu Close
+#define SE_RG_HELP_NG 259 // Help Menu Error
+#define SE_RG_DEOMOV 260 // Deoxys Moves
#define SE_RG_EXCELLENT 261
#define SE_RG_NAWAMISS 262
-#define SE_TOREEYE 263
-#define SE_TOREOFF 264
-#define SE_HANTEI1 265
-#define SE_HANTEI2 266
-#define SE_CURTAIN 267
-#define SE_CURTAIN1 268
-#define SE_USSOKI 269
+// end FRLG SFX
+#define SE_TOREEYE 263 // Trainer's Eye Call
+#define SE_TOREOFF 264 // Trainer's Eye Hang Up
+#define SE_HANTEI1 265 // Battle Arena Time's Up 1
+#define SE_HANTEI2 266 // Battle Arena Time's Up 2
+#define SE_CURTAIN 267 // Battle Pike Curtain Open
+#define SE_CURTAIN1 268 // Battle Pike Curtain Close
+#define SE_USSOKI 269 // Sudowoodo
-#define MUS_TETSUJI 350
-#define MUS_FIELD13 351
-#define MUS_KACHI22 352
-#define MUS_KACHI2 353
-#define MUS_KACHI3 354
-#define MUS_KACHI5 355
-#define MUS_PCC 356
-#define MUS_NIBI 357
-#define MUS_SUIKUN 358
-#define MUS_DOORO1 359
-#define MUS_DOORO_X1 360
-#define MUS_DOORO_X3 361
-#define MUS_MACHI_S2 362
-#define MUS_MACHI_S4 363
-#define MUS_GIM 364
-#define MUS_NAMINORI 365
-#define MUS_DAN01 366
-#define MUS_FANFA1 367
-#define MUS_ME_ASA 368
-#define MUS_ME_BACHI 369
-#define MUS_FANFA4 370
-#define MUS_FANFA5 371
-#define MUS_ME_WAZA 372
-#define MUS_BIJYUTU 373
-#define MUS_DOORO_X4 374
-#define MUS_FUNE_KAN 375
-#define MUS_ME_SHINKA 376
-#define MUS_SHINKA 377
-#define MUS_ME_WASURE 378
-#define MUS_SYOUJOEYE 379
-#define MUS_BOYEYE 380
-#define MUS_DAN02 381
-#define MUS_MACHI_S3 382
-#define MUS_ODAMAKI 383
-#define MUS_B_TOWER 384
-#define MUS_SWIMEYE 385
-#define MUS_DAN03 386
-#define MUS_ME_KINOMI 387
-#define MUS_ME_TAMA 388
-#define MUS_ME_B_BIG 389
-#define MUS_ME_B_SMALL 390
-#define MUS_ME_ZANNEN 391
-#define MUS_BD_TIME 392
-#define MUS_TEST1 393
-#define MUS_TEST2 394
-#define MUS_TEST3 395
-#define MUS_TEST4 396
-#define MUS_TEST 397
-#define MUS_GOMACHI0 398
-#define MUS_GOTOWN 399
-#define MUS_POKECEN 400
-#define MUS_NEXTROAD 401
-#define MUS_GRANROAD 402
-#define MUS_CYCLING 403
-#define MUS_FRIENDLY 404
-#define MUS_MISHIRO 405
-#define MUS_TOZAN 406
-#define MUS_GIRLEYE 407
-#define MUS_MINAMO 408
-#define MUS_ASHROAD 409
-#define MUS_EVENT0 410
-#define MUS_DEEPDEEP 411
-#define MUS_KACHI1 412
-#define MUS_TITLE3 413
-#define MUS_DEMO1 414
-#define MUS_GIRL_SUP 415
-#define MUS_HAGESHII 416
-#define MUS_KAKKOII 417
-#define MUS_KAZANBAI 418
-#define MUS_AQA_0 419
-#define MUS_TSURETEK 420
-#define MUS_BOY_SUP 421
-#define MUS_RAINBOW 422
-#define MUS_AYASII 423
-#define MUS_KACHI4 424
-#define MUS_ROPEWAY 425
-#define MUS_CASINO 426
-#define MUS_HIGHTOWN 427
-#define MUS_SAFARI 428
-#define MUS_C_ROAD 429
-#define MUS_AJITO 430
-#define MUS_M_BOAT 431
-#define MUS_M_DUNGON 432
-#define MUS_FINECITY 433
-#define MUS_MACHUPI 434
-#define MUS_P_SCHOOL 435
-#define MUS_DENDOU 436
-#define MUS_TONEKUSA 437
-#define MUS_MABOROSI 438
-#define MUS_CON_FAN 439
-#define MUS_CONTEST0 440
-#define MUS_MGM0 441
-#define MUS_T_BATTLE 442
-#define MUS_OOAME 443
-#define MUS_HIDERI 444
-#define MUS_RUNECITY 445
-#define MUS_CON_K 446
-#define MUS_EIKOU_R 447
-#define MUS_KARAKURI 448
-#define MUS_HUTAGO 449
-#define MUS_SITENNOU 450
-#define MUS_YAMA_EYE 451
-#define MUS_CONLOBBY 452
-#define MUS_INTER_V 453
-#define MUS_DAIGO 454
-#define MUS_THANKFOR 455
-#define MUS_END 456
-#define MUS_B_FRONTIER 457
-#define MUS_B_ARENA 458
-#define MUS_ME_POINTGET 459
-#define MUS_ME_TORE_EYE 460
-#define MUS_PYRAMID 461
-#define MUS_PYRAMID_TOP 462
-#define MUS_B_PALACE 463
-#define MUS_REKKUU_KOURIN 464
-#define MUS_SATTOWER 465
-#define MUS_ME_SYMBOLGET 466
-#define MUS_B_DOME 467
-#define MUS_B_TUBE 468
-#define MUS_B_FACTORY 469
-#define MUS_VS_REKKU 470
-#define MUS_VS_FRONT 471
-#define MUS_VS_MEW 472
-#define MUS_B_DOME1 473
-#define MUS_BATTLE27 474
-#define MUS_BATTLE31 475
-#define MUS_BATTLE20 476
-#define MUS_BATTLE32 477
-#define MUS_BATTLE33 478
-#define MUS_BATTLE36 479
-#define MUS_BATTLE34 480
-#define MUS_BATTLE35 481
-#define MUS_BATTLE38 482
-#define MUS_BATTLE30 483
-#define MUS_RG_ANNAI 484
-#define MUS_RG_SLOT 485
-#define MUS_RG_AJITO 486
-#define MUS_RG_GYM 487
-#define MUS_RG_PURIN 488
-#define MUS_RG_DEMO 489
-#define MUS_RG_TITLE 490
-#define MUS_RG_GUREN 491
-#define MUS_RG_SHION 492
-#define MUS_RG_KAIHUKU 493
-#define MUS_RG_CYCLING 494
-#define MUS_RG_ROCKET 495
-#define MUS_RG_SHOUJO 496
-#define MUS_RG_SHOUNEN 497
-#define MUS_RG_DENDOU 498
-#define MUS_RG_T_MORI 499
-#define MUS_RG_OTSUKIMI 500
-#define MUS_RG_POKEYASHI 501
-#define MUS_RG_ENDING 502
-#define MUS_RG_LOAD01 503
-#define MUS_RG_OPENING 504
-#define MUS_RG_LOAD02 505
-#define MUS_RG_LOAD03 506
-#define MUS_RG_CHAMP_R 507
-#define MUS_RG_VS_GYM 508
-#define MUS_RG_VS_TORE 509
-#define MUS_RG_VS_YASEI 510
-#define MUS_RG_VS_LAST 511
-#define MUS_RG_MASARA 512
-#define MUS_RG_KENKYU 513
-#define MUS_RG_OHKIDO 514
-#define MUS_RG_POKECEN 515
-#define MUS_RG_SANTOAN 516
-#define MUS_RG_NAMINORI 517
-#define MUS_RG_P_TOWER 518
-#define MUS_RG_SHIRUHU 519
-#define MUS_RG_HANADA 520
-#define MUS_RG_TAMAMUSI 521
-#define MUS_RG_WIN_TRE 522
-#define MUS_RG_WIN_YASEI 523
-#define MUS_RG_WIN_GYM 524
-#define MUS_RG_KUCHIBA 525
-#define MUS_RG_NIBI 526
-#define MUS_RG_RIVAL1 527
-#define MUS_RG_RIVAL2 528
-#define MUS_RG_FAN2 529
-#define MUS_RG_FAN5 530
-#define MUS_RG_FAN6 531
-#define MUS_ME_RG_PHOTO 532
-#define MUS_RG_TITLEROG 533
-#define MUS_RG_GET_YASEI 534
-#define MUS_RG_SOUSA 535
-#define MUS_RG_SEKAIKAN 536
-#define MUS_RG_SEIBETU 537
-#define MUS_RG_JUMP 538
-#define MUS_RG_UNION 539
-#define MUS_RG_NETWORK 540
-#define MUS_RG_OKURIMONO 541
+#define MUS_TETSUJI 350 // Littleroot Town Test 'TETSUJI'
+#define MUS_FIELD13 351 // GSC - Route 38
+#define MUS_KACHI22 352 // Wild Pokémon Defeated
+#define MUS_KACHI2 353 // Wild Pokémon Defeated with Intro
+#define MUS_KACHI3 354 // Gym Leader Defeated
+#define MUS_KACHI5 355 // Victory! Elite Four
+#define MUS_PCC 356 // Crystal - Pokémon Communication Center
+#define MUS_NIBI 357 // GSC - Viridian/Saffron/Pewter/etc
+#define MUS_SUIKUN 358 // Crystal - Battle! Legendary Beasts
+#define MUS_DOORO1 359 // Route 101
+#define MUS_DOORO_X1 360 // Route 110
+#define MUS_DOORO_X3 361 // Route 120
+#define MUS_MACHI_S2 362 // Petalburg City
+#define MUS_MACHI_S4 363 // Oldale/Lavaridge Town
+#define MUS_GIM 364 // Gym
+#define MUS_NAMINORI 365 // Surfing
+#define MUS_DAN01 366 // Caves and Darkness
+#define MUS_FANFA1 367 // Level Up!
+#define MUS_ME_ASA 368 // Pokémon Healed
+#define MUS_ME_BACHI 369 // Obtained a Badge!
+#define MUS_FANFA4 370 // Obtained an Item!
+#define MUS_FANFA5 371 // Your Pokémon Just Evolved!
+#define MUS_ME_WAZA 372 // Obtained a TM/HM!
+#define MUS_BIJYUTU 373 // Lilycove Museum
+#define MUS_DOORO_X4 374 // Route 122/Intro
+#define MUS_FUNE_KAN 375 // Slateport Museum
+#define MUS_ME_SHINKA 376 // Evolution Intro
+#define MUS_SHINKA 377 // Evolution
+#define MUS_ME_WASURE 378 // Move Deleted/Messed Up Appeal
+#define MUS_SYOUJOEYE 379 // Encounter! Tuber
+#define MUS_BOYEYE 380 // Encounter! Boy
+#define MUS_DAN02 381 // Abandoned Ship/Southern Island
+#define MUS_MACHI_S3 382 // Fortree City/Pacifidlog Town
+#define MUS_ODAMAKI 383 // Professor Birch's Lab
+#define MUS_B_TOWER 384 // Battle Tower (RS)
+#define MUS_SWIMEYE 385 // Encounter! Swimmer
+#define MUS_DAN03 386 // Meteor Falls/Cave of Origin
+#define MUS_ME_KINOMI 387 // Obtained a Berry!
+#define MUS_ME_TAMA 388 // Awakening the Super-Ancient Pokémon
+#define MUS_ME_B_BIG 389 // Slots Jackpot!
+#define MUS_ME_B_SMALL 390 // Slots Victory!
+#define MUS_ME_ZANNEN 391 // Too bad!
+#define MUS_BD_TIME 392 // Roulette!
+#define MUS_TEST1 393 // Contest Test 1
+#define MUS_TEST2 394 // Contest Test 2
+#define MUS_TEST3 395 // Contest Test 3
+#define MUS_TEST4 396 // Contest Test 4
+#define MUS_TEST 397 // Encounter! Gentleman
+#define MUS_GOMACHI0 398 // Verdanturf Town
+#define MUS_GOTOWN 399 // Rustboro/Mauville/Mossdeep City
+#define MUS_POKECEN 400 // Pokémon Center
+#define MUS_NEXTROAD 401 // Route 104
+#define MUS_GRANROAD 402 // Route 119
+#define MUS_CYCLING 403 // Cycling
+#define MUS_FRIENDLY 404 // Pokémart
+#define MUS_MISHIRO 405 // Littleroot Town
+#define MUS_TOZAN 406 // Sky Pillar
+#define MUS_GIRLEYE 407 // Encounter! Girl
+#define MUS_MINAMO 408 // Lilycove City
+#define MUS_ASHROAD 409 // Route 111
+#define MUS_EVENT0 410 // Help me!
+#define MUS_DEEPDEEP 411 // Underwater
+#define MUS_KACHI1 412 // Victory! Trainer
+#define MUS_TITLE3 413 // Title Screen
+#define MUS_DEMO1 414 // Opening Movie
+#define MUS_GIRL_SUP 415 // Encounter! May
+#define MUS_HAGESHII 416 // Encounter! Biker
+#define MUS_KAKKOII 417 // Encounter! Electric Trainer
+#define MUS_KAZANBAI 418 // Route 113
+#define MUS_AQA_0 419 // Encounter! Team Aqua
+#define MUS_TSURETEK 420 // Follow Me!
+#define MUS_BOY_SUP 421 // Encounter! Brendan
+#define MUS_RAINBOW 422 // Ever Grande City
+#define MUS_AYASII 423 // Encounter! Psychic
+#define MUS_KACHI4 424 // Victory! Aqua/Magma Grunt
+#define MUS_ROPEWAY 425 // Cable Car
+#define MUS_CASINO 426 // Game Corner
+#define MUS_HIGHTOWN 427 // Dewford Town
+#define MUS_SAFARI 428 // Safari Zone
+#define MUS_C_ROAD 429 // Victory Road
+#define MUS_AJITO 430 // Aqua/Magma Hideout
+#define MUS_M_BOAT 431 // Sailing
+#define MUS_M_DUNGON 432 // Mt. Pyre (Inside)
+#define MUS_FINECITY 433 // Slateport City
+#define MUS_MACHUPI 434 // Mt. Pyre (Outside)
+#define MUS_P_SCHOOL 435 // Pokémon Trainer's School
+#define MUS_DENDOU 436 // You're the Champion!
+#define MUS_TONEKUSA 437 // Fallarbor Town
+#define MUS_MABOROSI 438 // Sealed Chamber
+#define MUS_CON_FAN 439 // Obtained a Contest Ribbon!
+#define MUS_CONTEST0 440 // Pokémon Contest
+#define MUS_MGM0 441 // Encounter! Team Magma
+#define MUS_T_BATTLE 442 // Opening Battle
+#define MUS_OOAME 443 // The Flood
+#define MUS_HIDERI 444 // The Drought
+#define MUS_RUNECITY 445 // Sootopolis City
+#define MUS_CON_K 446 // Contest/Berry Blending Results
+#define MUS_EIKOU_R 447 // Hall of Fame
+#define MUS_KARAKURI 448 // Trick House
+#define MUS_HUTAGO 449 // Encounter! Kid
+#define MUS_SITENNOU 450 // Encounter! Elite Four
+#define MUS_YAMA_EYE 451 // Encounter! Hiker
+#define MUS_CONLOBBY 452 // Contest Lobby
+#define MUS_INTER_V 453 // Encounter! Gabby and Ty
+#define MUS_DAIGO 454 // Encounter! Wallace
+#define MUS_THANKFOR 455 // Credits
+#define MUS_END 456 // The End
+#define MUS_B_FRONTIER 457 // Battle Frontier
+#define MUS_B_ARENA 458 // Battle Arena
+#define MUS_ME_POINTGET 459 // Obtained Battle Points!
+#define MUS_ME_TORE_EYE 460 // Registered Trainer!
+#define MUS_PYRAMID 461 // Battle Pyramid
+#define MUS_PYRAMID_TOP 462 // Top of the Battle Pyramid
+#define MUS_B_PALACE 463 // Battle Palace
+#define MUS_REKKUU_KOURIN 464 // Rayquaza Enters
+#define MUS_SATTOWER 465 // Battle Tower (Emerald)
+#define MUS_ME_SYMBOLGET 466 // Obtained a Frontier Symbol!
+#define MUS_B_DOME 467 // Battle Dome
+#define MUS_B_TUBE 468 // Battle Pike
+#define MUS_B_FACTORY 469 // Battle Factory
+#define MUS_VS_REKKU 470 // Battle! Legendary Pokémon
+#define MUS_VS_FRONT 471 // Battle! Frontier Brain
+#define MUS_VS_MEW 472 // Battle! Mew
+#define MUS_B_DOME1 473 // Battle Dome Lobby
+#define MUS_BATTLE27 474 // Battle! Wild Pokémon
+#define MUS_BATTLE31 475 // Battle! Team Aqua/Magma
+#define MUS_BATTLE20 476 // Battle! Trainer
+#define MUS_BATTLE32 477 // Battle! Gym Leader
+#define MUS_BATTLE33 478 // Battle! Champion
+#define MUS_BATTLE36 479 // Battle! Regi Trio
+#define MUS_BATTLE34 480 // Battle! Legendary Pokémon (dupe)
+#define MUS_BATTLE35 481 // Battle! Rival
+#define MUS_BATTLE38 482 // Battle! Elite Four
+#define MUS_BATTLE30 483 // Battle! Archie/Maxie
+// FRLG Music Below
+#define MUS_RG_ANNAI 484 // Follow Me!
+#define MUS_RG_SLOT 485 // Game Corner
+#define MUS_RG_AJITO 486 // Rocket Hideout
+#define MUS_RG_GYM 487 // Gym
+#define MUS_RG_PURIN 488 // Jigglypuff's Song
+#define MUS_RG_DEMO 489 // Opening Movie
+#define MUS_RG_TITLE 490 // Title Screen
+#define MUS_RG_GUREN 491 // Cinnabar Island
+#define MUS_RG_SHION 492 // Lavender Town
+#define MUS_RG_KAIHUKU 493 // RBY Pokémon Center Healing
+#define MUS_RG_CYCLING 494 // Cycling
+#define MUS_RG_ROCKET 495 // Encounter! Team Rocket
+#define MUS_RG_SHOUJO 496 // Encounter! Girl
+#define MUS_RG_SHOUNEN 497 // Encounter! Boy
+#define MUS_RG_DENDOU 498 // You're the Champion!
+#define MUS_RG_T_MORI 499 // Viridian Forest
+#define MUS_RG_OTSUKIMI 500 // Mt. Moon
+#define MUS_RG_POKEYASHI 501 // Pokémon Mansion
+#define MUS_RG_ENDING 502 // Credits
+#define MUS_RG_LOAD01 503 // Route 1
+#define MUS_RG_OPENING 504 // Route 24/Intro
+#define MUS_RG_LOAD02 505 // Route 3
+#define MUS_RG_LOAD03 506 // Route 11
+#define MUS_RG_CHAMP_R 507 // Victory Road/Indigo Plateau
+#define MUS_RG_VS_GYM 508 // Battle! Gym Leader/Elite Four
+#define MUS_RG_VS_TORE 509 // Battle! Trainer
+#define MUS_RG_VS_YASEI 510 // Battle! Wild Pokémon
+#define MUS_RG_VS_LAST 511 // Battle! Champion
+#define MUS_RG_MASARA 512 // Pallet Town
+#define MUS_RG_KENKYU 513 // Professor Oak's Lab
+#define MUS_RG_OHKIDO 514 // Professor Oak's Theme
+#define MUS_RG_POKECEN 515 // Pokémon Center
+#define MUS_RG_SANTOAN 516 // S.S. Anne
+#define MUS_RG_NAMINORI 517 // Surfing
+#define MUS_RG_P_TOWER 518 // Pokémon Tower
+#define MUS_RG_SHIRUHU 519 // Silph Co.
+#define MUS_RG_HANADA 520 // Cerulean/Fuschia City
+#define MUS_RG_TAMAMUSI 521 // Celadon City
+#define MUS_RG_WIN_TRE 522 // Victory! Trainer
+#define MUS_RG_WIN_YASEI 523 // Victory! Wild Pokémon
+#define MUS_RG_WIN_GYM 524 // Victory! Gym Leader
+#define MUS_RG_KUCHIBA 525 // Vermillion City
+#define MUS_RG_NIBI 526 // Viridian/Saffron/Pewter City
+#define MUS_RG_RIVAL1 527 // Encounter! Rival
+#define MUS_RG_RIVAL2 528 // Rival's Exit
+#define MUS_RG_FAN2 529 // Fanfare 2
+#define MUS_RG_FAN5 530 // Obtained a Starter!
+#define MUS_RG_FAN6 531 // Pokémon Caught! (Used in Emerald)
+#define MUS_ME_RG_PHOTO 532 // Trainer Photo
+#define MUS_RG_TITLEROG 533 // Game Freak
+#define MUS_RG_GET_YASEI 534 // Pokémon Caught Victory Theme
+#define MUS_RG_SOUSA 535 // Starting Tutorial
+#define MUS_RG_SEKAIKAN 536 // Starting Tutorial 2
+#define MUS_RG_SEIBETU 537 // Starting Tutorial 3
+#define MUS_RG_JUMP 538 // Jumping Minigame
+#define MUS_RG_UNION 539 // Union Room
+#define MUS_RG_NETWORK 540 // Network Center
+#define MUS_RG_OKURIMONO 541 // Mystery Gift
#define MUS_RG_KINOMIKUI 542
-#define MUS_RG_NANADUNGEON 543
-#define MUS_RG_OSHIE_TV 544
-#define MUS_RG_NANASHIMA 545
-#define MUS_RG_NANAISEKI 546
-#define MUS_RG_NANA123 547
-#define MUS_RG_NANA45 548
-#define MUS_RG_NANA67 549
-#define MUS_RG_POKEFUE 550
-#define MUS_RG_VS_DEO 551
-#define MUS_RG_VS_MYU2 552
-#define MUS_RG_VS_DEN 553
-#define MUS_RG_EXEYE 554
-#define MUS_RG_DEOEYE 555
-#define MUS_RG_T_TOWER 556
-#define MUS_RG_SLOWMASARA 557
-#define MUS_RG_TVNOIZE 558
+#define MUS_RG_NANADUNGEON 543 // Sevii Caves/Altering Cave (Mt. Moon)
+#define MUS_RG_OSHIE_TV 544 // Follow Me!
+#define MUS_RG_NANASHIMA 545 // Sevii Islands Routes (Lake of Rage)
+#define MUS_RG_NANAISEKI 546 // Sevii Forests (Viridian Forest)
+#define MUS_RG_NANA123 547 // Sevii Islands 1-3 (Viridian/Saffron/Pewter)
+#define MUS_RG_NANA45 548 // Sevii Islands 4-5 (Azalea Town)
+#define MUS_RG_NANA67 549 // Sevii Islands 6-7 (Violet City)
+#define MUS_RG_POKEFUE 550 // Poké Flute
+#define MUS_RG_VS_DEO 551 // Battle! Deoxys
+#define MUS_RG_VS_MYU2 552 // Battle! Mewtwo
+#define MUS_RG_VS_DEN 553 // Battle! Legendary Birds
+#define MUS_RG_EXEYE 554 // Encounter! Gym Leader
+#define MUS_RG_DEOEYE 555 // Encounter! Deoxys
+#define MUS_RG_T_TOWER 556 // Trainer Tower (Gym)
+#define MUS_RG_SLOWMASARA 557 // Pallet Town (Hall of Fame remix)
+#define MUS_RG_TVNOIZE 558 // Teachy TV
#define PH_TRAP_BLEND 559
#define PH_TRAP_HELD 560
#define PH_TRAP_SOLO 561
diff --git a/include/field_camera.h b/include/field_camera.h
index f68c67854..6daa9a8a2 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -24,6 +24,7 @@ extern u16 gUnknown_03005DE8;
void DrawWholeMapView(void);
void CurrentMapDrawMetatileAt(int x, int y);
+void sub_8089C08(s16 *a0, s16 *a1);
void DrawDoorMetatileAt(int x, int y, u16 *arr);
#endif //GUARD_FIELD_CAMERA_H
diff --git a/include/field_effect.h b/include/field_effect.h
index fb0f20f6f..1fdcbe22c 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -75,6 +75,7 @@ u32 FieldEffectStart(u8);
bool8 FieldEffectActiveListContains(u8 id);
void sub_80B69DC(void);
void FieldEffectStop(struct Sprite *sprite, u8 id);
+u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
void sub_80B7FC8(void);
void FieldEffectActiveListRemove(u8 id);
diff --git a/include/gba/gba.h b/include/gba/gba.h
index 42ae3cdde..349344031 100644
--- a/include/gba/gba.h
+++ b/include/gba/gba.h
@@ -7,5 +7,6 @@
#include "gba/multiboot.h"
#include "gba/syscall.h"
#include "gba/macro.h"
+#include "gba/isagbprint.h"
#endif // GUARD_GBA_GBA_H
diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h
index f86f2434c..0364c38bc 100644
--- a/include/gba/io_reg.h
+++ b/include/gba/io_reg.h
@@ -501,12 +501,12 @@
// I/O register fields
// DISPCNT
-#define DISPCNT_MODE_0 0x0000
-#define DISPCNT_MODE_1 0x0001
-#define DISPCNT_MODE_2 0x0002
-#define DISPCNT_MODE_3 0x0003
-#define DISPCNT_MODE_4 0x0004
-#define DISPCNT_MODE_5 0x0005
+#define DISPCNT_MODE_0 0x0000 // BG0: text, BG1: text, BG2: text, BG3: text
+#define DISPCNT_MODE_1 0x0001 // BG0: text, BG1: text, BG2: affine, BG3: off
+#define DISPCNT_MODE_2 0x0002 // BG0: off, BG1: off, BG2: affine, BG3: affine
+#define DISPCNT_MODE_3 0x0003 // Bitmap mode, 240x160, BGR555 color
+#define DISPCNT_MODE_4 0x0004 // Bitmap mode, 240x160, 256 color palette
+#define DISPCNT_MODE_5 0x0005 // Bitmap mode, 160x128, BGR555 color
#define DISPCNT_OBJ_1D_MAP 0x0040
#define DISPCNT_FORCED_BLANK 0x0080
#define DISPCNT_BG0_ON 0x0100
@@ -527,7 +527,46 @@
#define DISPSTAT_HBLANK_INTR 0x0010 // H-Blank interrupt enabled
#define DISPSTAT_VCOUNT_INTR 0x0020 // V-Count interrupt enabled
+// BGCNT
+#define BGCNT_PRIORITY(n) (n) // Values 0 - 3. Lower priority BGs will be drawn on top of higher priority BGs.
+#define BGCNT_CHARBASE(n) ((n) << 2) // Values 0 - 3. Base block for tile pixel data.
+#define BGCNT_MOSAIC 0x0040
+#define BGCNT_16COLOR 0x0000 // 4 bits per pixel
+#define BGCNT_256COLOR 0x0080 // 8 bits per pixel
+#define BGCNT_SCREENBASE(n) ((n) << 8) // Values 0 - 31. Base block for tile map.
+#define BGCNT_WRAP 0x2000 // Only affects affine BGs. Text BGs wrap by default.
+#define BGCNT_TXT256x256 0x0000 // Internal screen size size of text mode BG in pixels.
+#define BGCNT_TXT512x256 0x4000
+#define BGCNT_TXT256x512 0x8000
+#define BGCNT_TXT512x512 0xC000
+#define BGCNT_AFF128x128 0x0000 // Internal screen size size of affine mode BG in pixels.
+#define BGCNT_AFF256x256 0x4000
+#define BGCNT_AFF512x512 0x8000
+#define BGCNT_AFF1024x1024 0xC000
+
// BLDCNT
+// Bits 0-5 select layers for the 1st target
+#define BLDCNT_TGT1_BG0 (1 << 0)
+#define BLDCNT_TGT1_BG1 (1 << 1)
+#define BLDCNT_TGT1_BG2 (1 << 2)
+#define BLDCNT_TGT1_BG3 (1 << 3)
+#define BLDCNT_TGT1_OBJ (1 << 4)
+#define BLDCNT_TGT1_BD (1 << 5)
+// Bits 6-7 select the special effect
+#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect
+#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA)
+#define BLDCNT_EFFECT_LIGHTEN (2 << 6) // 1st target becomes whiter (controlled by BLDY)
+#define BLDCNT_EFFECT_DARKEN (3 << 6) // 1st target becomes blacker (controlled by BLDY)
+// Bits 8-13 select layers for the 2nd target
+#define BLDCNT_TGT2_BG0 (1 << 8)
+#define BLDCNT_TGT2_BG1 (1 << 9)
+#define BLDCNT_TGT2_BG2 (1 << 10)
+#define BLDCNT_TGT2_BG3 (1 << 11)
+#define BLDCNT_TGT2_OBJ (1 << 12)
+#define BLDCNT_TGT2_BD (1 << 13)
+
+// BLDALPHA
+#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1))
// SOUNDCNT_H
#define SOUND_CGB_MIX_QUARTER 0x0000
@@ -627,8 +666,8 @@
#define KEY_INTR_ENABLE 0x0400
#define KEY_OR_INTR 0x0000
#define KEY_AND_INTR 0x8000
-
-#define DPAD_ANY ((DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN))
+#define DPAD_ANY ((DPAD_RIGHT | DPAD_LEFT | DPAD_UP | DPAD_DOWN))
+#define JOY_EXCL_DPAD 0x030F
// interrupt flags
#define INTR_FLAG_VBLANK (1 << 0)
diff --git a/include/gba/isagbprint.h b/include/gba/isagbprint.h
new file mode 100755
index 000000000..c5eb456c3
--- /dev/null
+++ b/include/gba/isagbprint.h
@@ -0,0 +1,50 @@
+#ifndef GUARD_GBA_ISAGBPRINT_H
+#define GUARD_GBA_ISAGBPRINT_H
+
+#ifdef NDEBUG
+#define AGBPrintInit()
+#define AGBPutc(cChr)
+#define AGBPrint(pBuf)
+#define AGBPrintf(pBuf, ...)
+#define AGBPrintFlush1Block()
+#define AGBPrintFlush()
+#define AGBAssert(pFile, nLine, pExpression, nStopProgram)
+#else
+void AGBPrintInit(void);
+void AGBPutc(const char cChr);
+void AGBPrint(const char *pBuf);
+void AGBPrintf(const char *pBuf, ...);
+void AGBPrintFlush1Block(void);
+void AGBPrintFlush(void);
+void AGBAssert(const char *pFile, int nLine, const char *pExpression, int nStopProgram);
+#endif
+
+#undef AGB_ASSERT
+#ifdef NDEBUG
+#define AGB_ASSERT(exp)
+#else
+#define AGB_ASSERT(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 1);
+#endif
+
+#undef AGB_WARNING
+#ifdef NDEBUG
+#define AGB_WARNING(exp)
+#else
+#define AGB_WARNING(exp) (exp) ? ((void*)0) : AGBAssert(__FILE__, __LINE__, #exp, 0);
+#endif
+
+// for matching purposes
+
+#ifdef NDEBUG
+#define AGB_ASSERT_EX(exp, file, line)
+#else
+#define AGB_ASSERT_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 1);
+#endif
+
+#ifdef NDEBUG
+#define AGB_WARNING_EX(exp, file, line)
+#else
+#define AGB_WARNING_EX(exp, file, line) (exp) ? ((void*)0) : AGBAssert(file, line, #exp, 0);
+#endif
+
+#endif // GUARD_GBA_ISAGBPRINT_H
diff --git a/include/global.h b/include/global.h
index 7943fc569..3e260fd2a 100644
--- a/include/global.h
+++ b/include/global.h
@@ -1,8 +1,8 @@
#ifndef GUARD_GLOBAL_H
#define GUARD_GLOBAL_H
+#include "config.h" // we need to define config before gba headers as print stuff needs the functions nulled before defines.
#include "gba/gba.h"
-#include "config.h"
// Prevent cross-jump optimization.
#define BLOCK_CROSS_JUMP asm("");
diff --git a/include/overworld.h b/include/overworld.h
index d6f90b666..597a160ed 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -74,4 +74,6 @@ void mapldr_default(void);
void IncrementGameStat(u8);
u32 GetGameStat(u8);
+void CB2_OverworldBasic(void);
+
#endif //GUARD_ROM4_H
diff --git a/include/unk_transition.h b/include/unk_transition.h
new file mode 100644
index 000000000..a9caac419
--- /dev/null
+++ b/include/unk_transition.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_UNK_TRANSITION_H
+#define GUARD_UNK_TRANSITION_H
+
+void Phase2Task_34(u8 taskId);
+void Phase2Task_35(u8 taskId);
+void Phase2Task_36(u8 taskId);
+void Phase2Task_37(u8 taskId);
+void Phase2Task_38(u8 taskId);
+void Phase2Task_39(u8 taskId);
+void Phase2Task_40(u8 taskId);
+void Phase2Task_41(u8 taskId);
+
+#endif // GUARD_UNK_TRANSITION_H