Merge pull request #1000 from GriffinRichards/doc-dex

Document pokedex.c
This commit is contained in:
PikalaxALT authored and GitHub committed 2020-03-17 10:43:57 -04:00
commit 39da49495d
31 files changed
+2587 -2174

No files matched your search

+1 -1
View File
@@ -1,2 +1,2 @@
gUnusedPokedexU8 gUnusedPokedexU8
gUnknown_030060B4 gPokedexVBlankCB
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Binary file not shown.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+348 -339
View File
@@ -601,6 +601,9 @@
#define NATIONAL_DEX_DRAGONITE 149 #define NATIONAL_DEX_DRAGONITE 149
#define NATIONAL_DEX_MEWTWO 150 #define NATIONAL_DEX_MEWTWO 150
#define NATIONAL_DEX_MEW 151 #define NATIONAL_DEX_MEW 151
#define KANTO_DEX_COUNT NATIONAL_DEX_MEW
#define NATIONAL_DEX_CHIKORITA 152 #define NATIONAL_DEX_CHIKORITA 152
#define NATIONAL_DEX_BAYLEEF 153 #define NATIONAL_DEX_BAYLEEF 153
#define NATIONAL_DEX_MEGANIUM 154 #define NATIONAL_DEX_MEGANIUM 154
@@ -702,6 +705,146 @@
#define NATIONAL_DEX_HO_OH 250 #define NATIONAL_DEX_HO_OH 250
#define NATIONAL_DEX_CELEBI 251 #define NATIONAL_DEX_CELEBI 251
#define JOHTO_DEX_COUNT NATIONAL_DEX_CELEBI
#define NATIONAL_DEX_TREECKO 252
#define NATIONAL_DEX_GROVYLE 253
#define NATIONAL_DEX_SCEPTILE 254
#define NATIONAL_DEX_TORCHIC 255
#define NATIONAL_DEX_COMBUSKEN 256
#define NATIONAL_DEX_BLAZIKEN 257
#define NATIONAL_DEX_MUDKIP 258
#define NATIONAL_DEX_MARSHTOMP 259
#define NATIONAL_DEX_SWAMPERT 260
#define NATIONAL_DEX_POOCHYENA 261
#define NATIONAL_DEX_MIGHTYENA 262
#define NATIONAL_DEX_ZIGZAGOON 263
#define NATIONAL_DEX_LINOONE 264
#define NATIONAL_DEX_WURMPLE 265
#define NATIONAL_DEX_SILCOON 266
#define NATIONAL_DEX_BEAUTIFLY 267
#define NATIONAL_DEX_CASCOON 268
#define NATIONAL_DEX_DUSTOX 269
#define NATIONAL_DEX_LOTAD 270
#define NATIONAL_DEX_LOMBRE 271
#define NATIONAL_DEX_LUDICOLO 272
#define NATIONAL_DEX_SEEDOT 273
#define NATIONAL_DEX_NUZLEAF 274
#define NATIONAL_DEX_SHIFTRY 275
#define NATIONAL_DEX_TAILLOW 276
#define NATIONAL_DEX_SWELLOW 277
#define NATIONAL_DEX_WINGULL 278
#define NATIONAL_DEX_PELIPPER 279
#define NATIONAL_DEX_RALTS 280
#define NATIONAL_DEX_KIRLIA 281
#define NATIONAL_DEX_GARDEVOIR 282
#define NATIONAL_DEX_SURSKIT 283
#define NATIONAL_DEX_MASQUERAIN 284
#define NATIONAL_DEX_SHROOMISH 285
#define NATIONAL_DEX_BRELOOM 286
#define NATIONAL_DEX_SLAKOTH 287
#define NATIONAL_DEX_VIGOROTH 288
#define NATIONAL_DEX_SLAKING 289
#define NATIONAL_DEX_NINCADA 290
#define NATIONAL_DEX_NINJASK 291
#define NATIONAL_DEX_SHEDINJA 292
#define NATIONAL_DEX_WHISMUR 293
#define NATIONAL_DEX_LOUDRED 294
#define NATIONAL_DEX_EXPLOUD 295
#define NATIONAL_DEX_MAKUHITA 296
#define NATIONAL_DEX_HARIYAMA 297
#define NATIONAL_DEX_AZURILL 298
#define NATIONAL_DEX_NOSEPASS 299
#define NATIONAL_DEX_SKITTY 300
#define NATIONAL_DEX_DELCATTY 301
#define NATIONAL_DEX_SABLEYE 302
#define NATIONAL_DEX_MAWILE 303
#define NATIONAL_DEX_ARON 304
#define NATIONAL_DEX_LAIRON 305
#define NATIONAL_DEX_AGGRON 306
#define NATIONAL_DEX_MEDITITE 307
#define NATIONAL_DEX_MEDICHAM 308
#define NATIONAL_DEX_ELECTRIKE 309
#define NATIONAL_DEX_MANECTRIC 310
#define NATIONAL_DEX_PLUSLE 311
#define NATIONAL_DEX_MINUN 312
#define NATIONAL_DEX_VOLBEAT 313
#define NATIONAL_DEX_ILLUMISE 314
#define NATIONAL_DEX_ROSELIA 315
#define NATIONAL_DEX_GULPIN 316
#define NATIONAL_DEX_SWALOT 317
#define NATIONAL_DEX_CARVANHA 318
#define NATIONAL_DEX_SHARPEDO 319
#define NATIONAL_DEX_WAILMER 320
#define NATIONAL_DEX_WAILORD 321
#define NATIONAL_DEX_NUMEL 322
#define NATIONAL_DEX_CAMERUPT 323
#define NATIONAL_DEX_TORKOAL 324
#define NATIONAL_DEX_SPOINK 325
#define NATIONAL_DEX_GRUMPIG 326
#define NATIONAL_DEX_SPINDA 327
#define NATIONAL_DEX_TRAPINCH 328
#define NATIONAL_DEX_VIBRAVA 329
#define NATIONAL_DEX_FLYGON 330
#define NATIONAL_DEX_CACNEA 331
#define NATIONAL_DEX_CACTURNE 332
#define NATIONAL_DEX_SWABLU 333
#define NATIONAL_DEX_ALTARIA 334
#define NATIONAL_DEX_ZANGOOSE 335
#define NATIONAL_DEX_SEVIPER 336
#define NATIONAL_DEX_LUNATONE 337
#define NATIONAL_DEX_SOLROCK 338
#define NATIONAL_DEX_BARBOACH 339
#define NATIONAL_DEX_WHISCASH 340
#define NATIONAL_DEX_CORPHISH 341
#define NATIONAL_DEX_CRAWDAUNT 342
#define NATIONAL_DEX_BALTOY 343
#define NATIONAL_DEX_CLAYDOL 344
#define NATIONAL_DEX_LILEEP 345
#define NATIONAL_DEX_CRADILY 346
#define NATIONAL_DEX_ANORITH 347
#define NATIONAL_DEX_ARMALDO 348
#define NATIONAL_DEX_FEEBAS 349
#define NATIONAL_DEX_MILOTIC 350
#define NATIONAL_DEX_CASTFORM 351
#define NATIONAL_DEX_KECLEON 352
#define NATIONAL_DEX_SHUPPET 353
#define NATIONAL_DEX_BANETTE 354
#define NATIONAL_DEX_DUSKULL 355
#define NATIONAL_DEX_DUSCLOPS 356
#define NATIONAL_DEX_TROPIUS 357
#define NATIONAL_DEX_CHIMECHO 358
#define NATIONAL_DEX_ABSOL 359
#define NATIONAL_DEX_WYNAUT 360
#define NATIONAL_DEX_SNORUNT 361
#define NATIONAL_DEX_GLALIE 362
#define NATIONAL_DEX_SPHEAL 363
#define NATIONAL_DEX_SEALEO 364
#define NATIONAL_DEX_WALREIN 365
#define NATIONAL_DEX_CLAMPERL 366
#define NATIONAL_DEX_HUNTAIL 367
#define NATIONAL_DEX_GOREBYSS 368
#define NATIONAL_DEX_RELICANTH 369
#define NATIONAL_DEX_LUVDISC 370
#define NATIONAL_DEX_BAGON 371
#define NATIONAL_DEX_SHELGON 372
#define NATIONAL_DEX_SALAMENCE 373
#define NATIONAL_DEX_BELDUM 374
#define NATIONAL_DEX_METANG 375
#define NATIONAL_DEX_METAGROSS 376
#define NATIONAL_DEX_REGIROCK 377
#define NATIONAL_DEX_REGICE 378
#define NATIONAL_DEX_REGISTEEL 379
#define NATIONAL_DEX_LATIAS 380
#define NATIONAL_DEX_LATIOS 381
#define NATIONAL_DEX_KYOGRE 382
#define NATIONAL_DEX_GROUDON 383
#define NATIONAL_DEX_RAYQUAZA 384
#define NATIONAL_DEX_JIRACHI 385
#define NATIONAL_DEX_DEOXYS 386
#define NATIONAL_DEX_COUNT NATIONAL_DEX_DEOXYS
#define NATIONAL_DEX_OLD_UNOWN_B 387 #define NATIONAL_DEX_OLD_UNOWN_B 387
#define NATIONAL_DEX_OLD_UNOWN_C 388 #define NATIONAL_DEX_OLD_UNOWN_C 388
#define NATIONAL_DEX_OLD_UNOWN_D 389 #define NATIONAL_DEX_OLD_UNOWN_D 389
@@ -728,145 +871,214 @@
#define NATIONAL_DEX_OLD_UNOWN_Y 410 #define NATIONAL_DEX_OLD_UNOWN_Y 410
#define NATIONAL_DEX_OLD_UNOWN_Z 411 #define NATIONAL_DEX_OLD_UNOWN_Z 411
#define NATIONAL_DEX_TREECKO 252
#define NATIONAL_DEX_GROVYLE 253
#define NATIONAL_DEX_SCEPTILE 254
#define NATIONAL_DEX_TORCHIC 255
#define NATIONAL_DEX_COMBUSKEN 256
#define NATIONAL_DEX_BLAZIKEN 257
#define NATIONAL_DEX_MUDKIP 258
#define NATIONAL_DEX_MARSHTOMP 259
#define NATIONAL_DEX_SWAMPERT 260
#define NATIONAL_DEX_POOCHYENA 261
#define NATIONAL_DEX_MIGHTYENA 262
#define NATIONAL_DEX_ZIGZAGOON 263
#define NATIONAL_DEX_LINOONE 264
#define NATIONAL_DEX_WURMPLE 265
#define NATIONAL_DEX_SILCOON 266
#define NATIONAL_DEX_BEAUTIFLY 267
#define NATIONAL_DEX_CASCOON 268
#define NATIONAL_DEX_DUSTOX 269
#define NATIONAL_DEX_LOTAD 270
#define NATIONAL_DEX_LOMBRE 271
#define NATIONAL_DEX_LUDICOLO 272
#define NATIONAL_DEX_SEEDOT 273
#define NATIONAL_DEX_NUZLEAF 274
#define NATIONAL_DEX_SHIFTRY 275
#define NATIONAL_DEX_NINCADA 290
#define NATIONAL_DEX_NINJASK 291
#define NATIONAL_DEX_SHEDINJA 292
#define NATIONAL_DEX_TAILLOW 276
#define NATIONAL_DEX_SWELLOW 277
#define NATIONAL_DEX_SHROOMISH 285
#define NATIONAL_DEX_BRELOOM 286
#define NATIONAL_DEX_SPINDA 327
#define NATIONAL_DEX_WINGULL 278
#define NATIONAL_DEX_PELIPPER 279
#define NATIONAL_DEX_SURSKIT 283
#define NATIONAL_DEX_MASQUERAIN 284
#define NATIONAL_DEX_WAILMER 320
#define NATIONAL_DEX_WAILORD 321
#define NATIONAL_DEX_SKITTY 300
#define NATIONAL_DEX_DELCATTY 301
#define NATIONAL_DEX_KECLEON 352
#define NATIONAL_DEX_BALTOY 343
#define NATIONAL_DEX_CLAYDOL 344
#define NATIONAL_DEX_NOSEPASS 299
#define NATIONAL_DEX_TORKOAL 324
#define NATIONAL_DEX_SABLEYE 302
#define NATIONAL_DEX_BARBOACH 339
#define NATIONAL_DEX_WHISCASH 340
#define NATIONAL_DEX_LUVDISC 370
#define NATIONAL_DEX_CORPHISH 341
#define NATIONAL_DEX_CRAWDAUNT 342
#define NATIONAL_DEX_FEEBAS 349
#define NATIONAL_DEX_MILOTIC 350
#define NATIONAL_DEX_CARVANHA 318
#define NATIONAL_DEX_SHARPEDO 319
#define NATIONAL_DEX_TRAPINCH 328
#define NATIONAL_DEX_VIBRAVA 329
#define NATIONAL_DEX_FLYGON 330
#define NATIONAL_DEX_MAKUHITA 296
#define NATIONAL_DEX_HARIYAMA 297
#define NATIONAL_DEX_ELECTRIKE 309
#define NATIONAL_DEX_MANECTRIC 310
#define NATIONAL_DEX_NUMEL 322
#define NATIONAL_DEX_CAMERUPT 323
#define NATIONAL_DEX_SPHEAL 363
#define NATIONAL_DEX_SEALEO 364
#define NATIONAL_DEX_WALREIN 365
#define NATIONAL_DEX_CACNEA 331
#define NATIONAL_DEX_CACTURNE 332
#define NATIONAL_DEX_SNORUNT 361
#define NATIONAL_DEX_GLALIE 362
#define NATIONAL_DEX_LUNATONE 337
#define NATIONAL_DEX_SOLROCK 338
#define NATIONAL_DEX_AZURILL 298
#define NATIONAL_DEX_SPOINK 325
#define NATIONAL_DEX_GRUMPIG 326
#define NATIONAL_DEX_PLUSLE 311
#define NATIONAL_DEX_MINUN 312
#define NATIONAL_DEX_MAWILE 303
#define NATIONAL_DEX_MEDITITE 307
#define NATIONAL_DEX_MEDICHAM 308
#define NATIONAL_DEX_SWABLU 333
#define NATIONAL_DEX_ALTARIA 334
#define NATIONAL_DEX_WYNAUT 360
#define NATIONAL_DEX_DUSKULL 355
#define NATIONAL_DEX_DUSCLOPS 356
#define NATIONAL_DEX_ROSELIA 315
#define NATIONAL_DEX_SLAKOTH 287
#define NATIONAL_DEX_VIGOROTH 288
#define NATIONAL_DEX_SLAKING 289
#define NATIONAL_DEX_GULPIN 316
#define NATIONAL_DEX_SWALOT 317
#define NATIONAL_DEX_TROPIUS 357
#define NATIONAL_DEX_WHISMUR 293
#define NATIONAL_DEX_LOUDRED 294
#define NATIONAL_DEX_EXPLOUD 295
#define NATIONAL_DEX_CLAMPERL 366
#define NATIONAL_DEX_HUNTAIL 367
#define NATIONAL_DEX_GOREBYSS 368
#define NATIONAL_DEX_ABSOL 359
#define NATIONAL_DEX_SHUPPET 353
#define NATIONAL_DEX_BANETTE 354
#define NATIONAL_DEX_SEVIPER 336
#define NATIONAL_DEX_ZANGOOSE 335
#define NATIONAL_DEX_RELICANTH 369
#define NATIONAL_DEX_ARON 304
#define NATIONAL_DEX_LAIRON 305
#define NATIONAL_DEX_AGGRON 306
#define NATIONAL_DEX_CASTFORM 351
#define NATIONAL_DEX_VOLBEAT 313
#define NATIONAL_DEX_ILLUMISE 314
#define NATIONAL_DEX_LILEEP 345
#define NATIONAL_DEX_CRADILY 346
#define NATIONAL_DEX_ANORITH 347
#define NATIONAL_DEX_ARMALDO 348
#define NATIONAL_DEX_RALTS 280
#define NATIONAL_DEX_KIRLIA 281
#define NATIONAL_DEX_GARDEVOIR 282
#define NATIONAL_DEX_BAGON 371
#define NATIONAL_DEX_SHELGON 372
#define NATIONAL_DEX_SALAMENCE 373
#define NATIONAL_DEX_BELDUM 374
#define NATIONAL_DEX_METANG 375
#define NATIONAL_DEX_METAGROSS 376
#define NATIONAL_DEX_REGIROCK 377
#define NATIONAL_DEX_REGICE 378
#define NATIONAL_DEX_REGISTEEL 379
#define NATIONAL_DEX_KYOGRE 382
#define NATIONAL_DEX_GROUDON 383
#define NATIONAL_DEX_RAYQUAZA 384
#define NATIONAL_DEX_LATIAS 380
#define NATIONAL_DEX_LATIOS 381
#define NATIONAL_DEX_JIRACHI 385
#define NATIONAL_DEX_DEOXYS 386
#define NATIONAL_DEX_CHIMECHO 358
// Hoenn Dex Index Defines // Hoenn Dex Index Defines
#define HOENN_DEX_NONE 0 #define HOENN_DEX_NONE 0
#define HOENN_DEX_TREECKO 1
#define HOENN_DEX_GROVYLE 2
#define HOENN_DEX_SCEPTILE 3
#define HOENN_DEX_TORCHIC 4
#define HOENN_DEX_COMBUSKEN 5
#define HOENN_DEX_BLAZIKEN 6
#define HOENN_DEX_MUDKIP 7
#define HOENN_DEX_MARSHTOMP 8
#define HOENN_DEX_SWAMPERT 9
#define HOENN_DEX_POOCHYENA 10
#define HOENN_DEX_MIGHTYENA 11
#define HOENN_DEX_ZIGZAGOON 12
#define HOENN_DEX_LINOONE 13
#define HOENN_DEX_WURMPLE 14
#define HOENN_DEX_SILCOON 15
#define HOENN_DEX_BEAUTIFLY 16
#define HOENN_DEX_CASCOON 17
#define HOENN_DEX_DUSTOX 18
#define HOENN_DEX_LOTAD 19
#define HOENN_DEX_LOMBRE 20
#define HOENN_DEX_LUDICOLO 21
#define HOENN_DEX_SEEDOT 22
#define HOENN_DEX_NUZLEAF 23
#define HOENN_DEX_SHIFTRY 24
#define HOENN_DEX_TAILLOW 25
#define HOENN_DEX_SWELLOW 26
#define HOENN_DEX_WINGULL 27
#define HOENN_DEX_PELIPPER 28
#define HOENN_DEX_RALTS 29
#define HOENN_DEX_KIRLIA 30
#define HOENN_DEX_GARDEVOIR 31
#define HOENN_DEX_SURSKIT 32
#define HOENN_DEX_MASQUERAIN 33
#define HOENN_DEX_SHROOMISH 34
#define HOENN_DEX_BRELOOM 35
#define HOENN_DEX_SLAKOTH 36
#define HOENN_DEX_VIGOROTH 37
#define HOENN_DEX_SLAKING 38
#define HOENN_DEX_ABRA 39
#define HOENN_DEX_KADABRA 40
#define HOENN_DEX_ALAKAZAM 41
#define HOENN_DEX_NINCADA 42
#define HOENN_DEX_NINJASK 43
#define HOENN_DEX_SHEDINJA 44
#define HOENN_DEX_WHISMUR 45
#define HOENN_DEX_LOUDRED 46
#define HOENN_DEX_EXPLOUD 47
#define HOENN_DEX_MAKUHITA 48
#define HOENN_DEX_HARIYAMA 49
#define HOENN_DEX_GOLDEEN 50
#define HOENN_DEX_SEAKING 51
#define HOENN_DEX_MAGIKARP 52
#define HOENN_DEX_GYARADOS 53
#define HOENN_DEX_AZURILL 54
#define HOENN_DEX_MARILL 55
#define HOENN_DEX_AZUMARILL 56
#define HOENN_DEX_GEODUDE 57
#define HOENN_DEX_GRAVELER 58
#define HOENN_DEX_GOLEM 59
#define HOENN_DEX_NOSEPASS 60
#define HOENN_DEX_SKITTY 61
#define HOENN_DEX_DELCATTY 62
#define HOENN_DEX_ZUBAT 63
#define HOENN_DEX_GOLBAT 64
#define HOENN_DEX_CROBAT 65
#define HOENN_DEX_TENTACOOL 66
#define HOENN_DEX_TENTACRUEL 67
#define HOENN_DEX_SABLEYE 68
#define HOENN_DEX_MAWILE 69
#define HOENN_DEX_ARON 70
#define HOENN_DEX_LAIRON 71
#define HOENN_DEX_AGGRON 72
#define HOENN_DEX_MACHOP 73
#define HOENN_DEX_MACHOKE 74
#define HOENN_DEX_MACHAMP 75
#define HOENN_DEX_MEDITITE 76
#define HOENN_DEX_MEDICHAM 77
#define HOENN_DEX_ELECTRIKE 78
#define HOENN_DEX_MANECTRIC 79
#define HOENN_DEX_PLUSLE 80
#define HOENN_DEX_MINUN 81
#define HOENN_DEX_MAGNEMITE 82
#define HOENN_DEX_MAGNETON 83
#define HOENN_DEX_VOLTORB 84
#define HOENN_DEX_ELECTRODE 85
#define HOENN_DEX_VOLBEAT 86
#define HOENN_DEX_ILLUMISE 87
#define HOENN_DEX_ODDISH 88
#define HOENN_DEX_GLOOM 89
#define HOENN_DEX_VILEPLUME 90
#define HOENN_DEX_BELLOSSOM 91
#define HOENN_DEX_DODUO 92
#define HOENN_DEX_DODRIO 93
#define HOENN_DEX_ROSELIA 94
#define HOENN_DEX_GULPIN 95
#define HOENN_DEX_SWALOT 96
#define HOENN_DEX_CARVANHA 97
#define HOENN_DEX_SHARPEDO 98
#define HOENN_DEX_WAILMER 99
#define HOENN_DEX_WAILORD 100
#define HOENN_DEX_NUMEL 101
#define HOENN_DEX_CAMERUPT 102
#define HOENN_DEX_SLUGMA 103
#define HOENN_DEX_MAGCARGO 104
#define HOENN_DEX_TORKOAL 105
#define HOENN_DEX_GRIMER 106
#define HOENN_DEX_MUK 107
#define HOENN_DEX_KOFFING 108
#define HOENN_DEX_WEEZING 109
#define HOENN_DEX_SPOINK 110
#define HOENN_DEX_GRUMPIG 111
#define HOENN_DEX_SANDSHREW 112
#define HOENN_DEX_SANDSLASH 113
#define HOENN_DEX_SPINDA 114
#define HOENN_DEX_SKARMORY 115
#define HOENN_DEX_TRAPINCH 116
#define HOENN_DEX_VIBRAVA 117
#define HOENN_DEX_FLYGON 118
#define HOENN_DEX_CACNEA 119
#define HOENN_DEX_CACTURNE 120
#define HOENN_DEX_SWABLU 121
#define HOENN_DEX_ALTARIA 122
#define HOENN_DEX_ZANGOOSE 123
#define HOENN_DEX_SEVIPER 124
#define HOENN_DEX_LUNATONE 125
#define HOENN_DEX_SOLROCK 126
#define HOENN_DEX_BARBOACH 127
#define HOENN_DEX_WHISCASH 128
#define HOENN_DEX_CORPHISH 129
#define HOENN_DEX_CRAWDAUNT 130
#define HOENN_DEX_BALTOY 131
#define HOENN_DEX_CLAYDOL 132
#define HOENN_DEX_LILEEP 133
#define HOENN_DEX_CRADILY 134
#define HOENN_DEX_ANORITH 135
#define HOENN_DEX_ARMALDO 136
#define HOENN_DEX_IGGLYBUFF 137
#define HOENN_DEX_JIGGLYPUFF 138
#define HOENN_DEX_WIGGLYTUFF 139
#define HOENN_DEX_FEEBAS 140
#define HOENN_DEX_MILOTIC 141
#define HOENN_DEX_CASTFORM 142
#define HOENN_DEX_STARYU 143
#define HOENN_DEX_STARMIE 144
#define HOENN_DEX_KECLEON 145
#define HOENN_DEX_SHUPPET 146
#define HOENN_DEX_BANETTE 147
#define HOENN_DEX_DUSKULL 148
#define HOENN_DEX_DUSCLOPS 149
#define HOENN_DEX_TROPIUS 150
#define HOENN_DEX_CHIMECHO 151
#define HOENN_DEX_ABSOL 152
#define HOENN_DEX_VULPIX 153
#define HOENN_DEX_NINETALES 154
#define HOENN_DEX_PICHU 155
#define HOENN_DEX_PIKACHU 156
#define HOENN_DEX_RAICHU 157
#define HOENN_DEX_PSYDUCK 158
#define HOENN_DEX_GOLDUCK 159
#define HOENN_DEX_WYNAUT 160
#define HOENN_DEX_WOBBUFFET 161
#define HOENN_DEX_NATU 162
#define HOENN_DEX_XATU 163
#define HOENN_DEX_GIRAFARIG 164
#define HOENN_DEX_PHANPY 165
#define HOENN_DEX_DONPHAN 166
#define HOENN_DEX_PINSIR 167
#define HOENN_DEX_HERACROSS 168
#define HOENN_DEX_RHYHORN 169
#define HOENN_DEX_RHYDON 170
#define HOENN_DEX_SNORUNT 171
#define HOENN_DEX_GLALIE 172
#define HOENN_DEX_SPHEAL 173
#define HOENN_DEX_SEALEO 174
#define HOENN_DEX_WALREIN 175
#define HOENN_DEX_CLAMPERL 176
#define HOENN_DEX_HUNTAIL 177
#define HOENN_DEX_GOREBYSS 178
#define HOENN_DEX_RELICANTH 179
#define HOENN_DEX_CORSOLA 180
#define HOENN_DEX_CHINCHOU 181
#define HOENN_DEX_LANTURN 182
#define HOENN_DEX_LUVDISC 183
#define HOENN_DEX_HORSEA 184
#define HOENN_DEX_SEADRA 185
#define HOENN_DEX_KINGDRA 186
#define HOENN_DEX_BAGON 187
#define HOENN_DEX_SHELGON 188
#define HOENN_DEX_SALAMENCE 189
#define HOENN_DEX_BELDUM 190
#define HOENN_DEX_METANG 191
#define HOENN_DEX_METAGROSS 192
#define HOENN_DEX_REGIROCK 193
#define HOENN_DEX_REGICE 194
#define HOENN_DEX_REGISTEEL 195
#define HOENN_DEX_LATIAS 196
#define HOENN_DEX_LATIOS 197
#define HOENN_DEX_KYOGRE 198
#define HOENN_DEX_GROUDON 199
#define HOENN_DEX_RAYQUAZA 200
#define HOENN_DEX_JIRACHI 201
#define HOENN_DEX_DEOXYS 202
#define HOENN_DEX_COUNT HOENN_DEX_DEOXYS
#define HOENN_DEX_BULBASAUR 203 #define HOENN_DEX_BULBASAUR 203
#define HOENN_DEX_IVYSAUR 204 #define HOENN_DEX_IVYSAUR 204
#define HOENN_DEX_VENUSAUR 205 #define HOENN_DEX_VENUSAUR 205
@@ -891,10 +1103,6 @@
#define HOENN_DEX_FEAROW 224 #define HOENN_DEX_FEAROW 224
#define HOENN_DEX_EKANS 225 #define HOENN_DEX_EKANS 225
#define HOENN_DEX_ARBOK 226 #define HOENN_DEX_ARBOK 226
#define HOENN_DEX_PIKACHU 156
#define HOENN_DEX_RAICHU 157
#define HOENN_DEX_SANDSHREW 112
#define HOENN_DEX_SANDSLASH 113
#define HOENN_DEX_NIDORAN_F 227 #define HOENN_DEX_NIDORAN_F 227
#define HOENN_DEX_NIDORINA 228 #define HOENN_DEX_NIDORINA 228
#define HOENN_DEX_NIDOQUEEN 229 #define HOENN_DEX_NIDOQUEEN 229
@@ -903,15 +1111,6 @@
#define HOENN_DEX_NIDOKING 232 #define HOENN_DEX_NIDOKING 232
#define HOENN_DEX_CLEFAIRY 233 #define HOENN_DEX_CLEFAIRY 233
#define HOENN_DEX_CLEFABLE 234 #define HOENN_DEX_CLEFABLE 234
#define HOENN_DEX_VULPIX 153
#define HOENN_DEX_NINETALES 154
#define HOENN_DEX_JIGGLYPUFF 138
#define HOENN_DEX_WIGGLYTUFF 139
#define HOENN_DEX_ZUBAT 63
#define HOENN_DEX_GOLBAT 64
#define HOENN_DEX_ODDISH 88
#define HOENN_DEX_GLOOM 89
#define HOENN_DEX_VILEPLUME 90
#define HOENN_DEX_PARAS 235 #define HOENN_DEX_PARAS 235
#define HOENN_DEX_PARASECT 236 #define HOENN_DEX_PARASECT 236
#define HOENN_DEX_VENONAT 237 #define HOENN_DEX_VENONAT 237
@@ -920,8 +1119,6 @@
#define HOENN_DEX_DUGTRIO 240 #define HOENN_DEX_DUGTRIO 240
#define HOENN_DEX_MEOWTH 241 #define HOENN_DEX_MEOWTH 241
#define HOENN_DEX_PERSIAN 242 #define HOENN_DEX_PERSIAN 242
#define HOENN_DEX_PSYDUCK 158
#define HOENN_DEX_GOLDUCK 159
#define HOENN_DEX_MANKEY 243 #define HOENN_DEX_MANKEY 243
#define HOENN_DEX_PRIMEAPE 244 #define HOENN_DEX_PRIMEAPE 244
#define HOENN_DEX_GROWLITHE 245 #define HOENN_DEX_GROWLITHE 245
@@ -929,33 +1126,16 @@
#define HOENN_DEX_POLIWAG 247 #define HOENN_DEX_POLIWAG 247
#define HOENN_DEX_POLIWHIRL 248 #define HOENN_DEX_POLIWHIRL 248
#define HOENN_DEX_POLIWRATH 249 #define HOENN_DEX_POLIWRATH 249
#define HOENN_DEX_ABRA 39
#define HOENN_DEX_KADABRA 40
#define HOENN_DEX_ALAKAZAM 41
#define HOENN_DEX_MACHOP 73
#define HOENN_DEX_MACHOKE 74
#define HOENN_DEX_MACHAMP 75
#define HOENN_DEX_BELLSPROUT 250 #define HOENN_DEX_BELLSPROUT 250
#define HOENN_DEX_WEEPINBELL 251 #define HOENN_DEX_WEEPINBELL 251
#define HOENN_DEX_VICTREEBEL 252 #define HOENN_DEX_VICTREEBEL 252
#define HOENN_DEX_TENTACOOL 66
#define HOENN_DEX_TENTACRUEL 67
#define HOENN_DEX_GEODUDE 57
#define HOENN_DEX_GRAVELER 58
#define HOENN_DEX_GOLEM 59
#define HOENN_DEX_PONYTA 253 #define HOENN_DEX_PONYTA 253
#define HOENN_DEX_RAPIDASH 254 #define HOENN_DEX_RAPIDASH 254
#define HOENN_DEX_SLOWPOKE 255 #define HOENN_DEX_SLOWPOKE 255
#define HOENN_DEX_SLOWBRO 256 #define HOENN_DEX_SLOWBRO 256
#define HOENN_DEX_MAGNEMITE 82
#define HOENN_DEX_MAGNETON 83
#define HOENN_DEX_FARFETCHD 257 #define HOENN_DEX_FARFETCHD 257
#define HOENN_DEX_DODUO 92
#define HOENN_DEX_DODRIO 93
#define HOENN_DEX_SEEL 258 #define HOENN_DEX_SEEL 258
#define HOENN_DEX_DEWGONG 259 #define HOENN_DEX_DEWGONG 259
#define HOENN_DEX_GRIMER 106
#define HOENN_DEX_MUK 107
#define HOENN_DEX_SHELLDER 260 #define HOENN_DEX_SHELLDER 260
#define HOENN_DEX_CLOYSTER 261 #define HOENN_DEX_CLOYSTER 261
#define HOENN_DEX_GASTLY 262 #define HOENN_DEX_GASTLY 262
@@ -966,8 +1146,6 @@
#define HOENN_DEX_HYPNO 267 #define HOENN_DEX_HYPNO 267
#define HOENN_DEX_KRABBY 268 #define HOENN_DEX_KRABBY 268
#define HOENN_DEX_KINGLER 269 #define HOENN_DEX_KINGLER 269
#define HOENN_DEX_VOLTORB 84
#define HOENN_DEX_ELECTRODE 85
#define HOENN_DEX_EXEGGCUTE 270 #define HOENN_DEX_EXEGGCUTE 270
#define HOENN_DEX_EXEGGUTOR 271 #define HOENN_DEX_EXEGGUTOR 271
#define HOENN_DEX_CUBONE 272 #define HOENN_DEX_CUBONE 272
@@ -975,28 +1153,15 @@
#define HOENN_DEX_HITMONLEE 274 #define HOENN_DEX_HITMONLEE 274
#define HOENN_DEX_HITMONCHAN 275 #define HOENN_DEX_HITMONCHAN 275
#define HOENN_DEX_LICKITUNG 276 #define HOENN_DEX_LICKITUNG 276
#define HOENN_DEX_KOFFING 108
#define HOENN_DEX_WEEZING 109
#define HOENN_DEX_RHYHORN 169
#define HOENN_DEX_RHYDON 170
#define HOENN_DEX_CHANSEY 277 #define HOENN_DEX_CHANSEY 277
#define HOENN_DEX_TANGELA 278 #define HOENN_DEX_TANGELA 278
#define HOENN_DEX_KANGASKHAN 279 #define HOENN_DEX_KANGASKHAN 279
#define HOENN_DEX_HORSEA 184
#define HOENN_DEX_SEADRA 185
#define HOENN_DEX_GOLDEEN 50
#define HOENN_DEX_SEAKING 51
#define HOENN_DEX_STARYU 143
#define HOENN_DEX_STARMIE 144
#define HOENN_DEX_MR_MIME 280 #define HOENN_DEX_MR_MIME 280
#define HOENN_DEX_SCYTHER 281 #define HOENN_DEX_SCYTHER 281
#define HOENN_DEX_JYNX 282 #define HOENN_DEX_JYNX 282
#define HOENN_DEX_ELECTABUZZ 283 #define HOENN_DEX_ELECTABUZZ 283
#define HOENN_DEX_MAGMAR 284 #define HOENN_DEX_MAGMAR 284
#define HOENN_DEX_PINSIR 167
#define HOENN_DEX_TAUROS 285 #define HOENN_DEX_TAUROS 285
#define HOENN_DEX_MAGIKARP 52
#define HOENN_DEX_GYARADOS 53
#define HOENN_DEX_LAPRAS 286 #define HOENN_DEX_LAPRAS 286
#define HOENN_DEX_DITTO 287 #define HOENN_DEX_DITTO 287
#define HOENN_DEX_EEVEE 288 #define HOENN_DEX_EEVEE 288
@@ -1035,22 +1200,12 @@
#define HOENN_DEX_LEDIAN 321 #define HOENN_DEX_LEDIAN 321
#define HOENN_DEX_SPINARAK 322 #define HOENN_DEX_SPINARAK 322
#define HOENN_DEX_ARIADOS 323 #define HOENN_DEX_ARIADOS 323
#define HOENN_DEX_CROBAT 65
#define HOENN_DEX_CHINCHOU 181
#define HOENN_DEX_LANTURN 182
#define HOENN_DEX_PICHU 155
#define HOENN_DEX_CLEFFA 324 #define HOENN_DEX_CLEFFA 324
#define HOENN_DEX_IGGLYBUFF 137
#define HOENN_DEX_TOGEPI 325 #define HOENN_DEX_TOGEPI 325
#define HOENN_DEX_TOGETIC 326 #define HOENN_DEX_TOGETIC 326
#define HOENN_DEX_NATU 162
#define HOENN_DEX_XATU 163
#define HOENN_DEX_MAREEP 327 #define HOENN_DEX_MAREEP 327
#define HOENN_DEX_FLAAFFY 328 #define HOENN_DEX_FLAAFFY 328
#define HOENN_DEX_AMPHAROS 329 #define HOENN_DEX_AMPHAROS 329
#define HOENN_DEX_BELLOSSOM 91
#define HOENN_DEX_MARILL 55
#define HOENN_DEX_AZUMARILL 56
#define HOENN_DEX_SUDOWOODO 330 #define HOENN_DEX_SUDOWOODO 330
#define HOENN_DEX_POLITOED 331 #define HOENN_DEX_POLITOED 331
#define HOENN_DEX_HOPPIP 332 #define HOENN_DEX_HOPPIP 332
@@ -1068,8 +1223,6 @@
#define HOENN_DEX_SLOWKING 344 #define HOENN_DEX_SLOWKING 344
#define HOENN_DEX_MISDREAVUS 345 #define HOENN_DEX_MISDREAVUS 345
#define HOENN_DEX_UNOWN 346 #define HOENN_DEX_UNOWN 346
#define HOENN_DEX_WOBBUFFET 161
#define HOENN_DEX_GIRAFARIG 164
#define HOENN_DEX_PINECO 347 #define HOENN_DEX_PINECO 347
#define HOENN_DEX_FORRETRESS 348 #define HOENN_DEX_FORRETRESS 348
#define HOENN_DEX_DUNSPARCE 349 #define HOENN_DEX_DUNSPARCE 349
@@ -1080,25 +1233,17 @@
#define HOENN_DEX_QWILFISH 354 #define HOENN_DEX_QWILFISH 354
#define HOENN_DEX_SCIZOR 355 #define HOENN_DEX_SCIZOR 355
#define HOENN_DEX_SHUCKLE 356 #define HOENN_DEX_SHUCKLE 356
#define HOENN_DEX_HERACROSS 168
#define HOENN_DEX_SNEASEL 357 #define HOENN_DEX_SNEASEL 357
#define HOENN_DEX_TEDDIURSA 358 #define HOENN_DEX_TEDDIURSA 358
#define HOENN_DEX_URSARING 359 #define HOENN_DEX_URSARING 359
#define HOENN_DEX_SLUGMA 103
#define HOENN_DEX_MAGCARGO 104
#define HOENN_DEX_SWINUB 360 #define HOENN_DEX_SWINUB 360
#define HOENN_DEX_PILOSWINE 361 #define HOENN_DEX_PILOSWINE 361
#define HOENN_DEX_CORSOLA 180
#define HOENN_DEX_REMORAID 362 #define HOENN_DEX_REMORAID 362
#define HOENN_DEX_OCTILLERY 363 #define HOENN_DEX_OCTILLERY 363
#define HOENN_DEX_DELIBIRD 364 #define HOENN_DEX_DELIBIRD 364
#define HOENN_DEX_MANTINE 365 #define HOENN_DEX_MANTINE 365
#define HOENN_DEX_SKARMORY 115
#define HOENN_DEX_HOUNDOUR 366 #define HOENN_DEX_HOUNDOUR 366
#define HOENN_DEX_HOUNDOOM 367 #define HOENN_DEX_HOUNDOOM 367
#define HOENN_DEX_KINGDRA 186
#define HOENN_DEX_PHANPY 165
#define HOENN_DEX_DONPHAN 166
#define HOENN_DEX_PORYGON2 368 #define HOENN_DEX_PORYGON2 368
#define HOENN_DEX_STANTLER 369 #define HOENN_DEX_STANTLER 369
#define HOENN_DEX_SMEARGLE 370 #define HOENN_DEX_SMEARGLE 370
@@ -1145,140 +1290,4 @@
#define HOENN_DEX_OLD_UNOWN_Y 410 #define HOENN_DEX_OLD_UNOWN_Y 410
#define HOENN_DEX_OLD_UNOWN_Z 411 #define HOENN_DEX_OLD_UNOWN_Z 411
#define HOENN_DEX_TREECKO 1
#define HOENN_DEX_GROVYLE 2
#define HOENN_DEX_SCEPTILE 3
#define HOENN_DEX_TORCHIC 4
#define HOENN_DEX_COMBUSKEN 5
#define HOENN_DEX_BLAZIKEN 6
#define HOENN_DEX_MUDKIP 7
#define HOENN_DEX_MARSHTOMP 8
#define HOENN_DEX_SWAMPERT 9
#define HOENN_DEX_POOCHYENA 10
#define HOENN_DEX_MIGHTYENA 11
#define HOENN_DEX_ZIGZAGOON 12
#define HOENN_DEX_LINOONE 13
#define HOENN_DEX_WURMPLE 14
#define HOENN_DEX_SILCOON 15
#define HOENN_DEX_BEAUTIFLY 16
#define HOENN_DEX_CASCOON 17
#define HOENN_DEX_DUSTOX 18
#define HOENN_DEX_LOTAD 19
#define HOENN_DEX_LOMBRE 20
#define HOENN_DEX_LUDICOLO 21
#define HOENN_DEX_SEEDOT 22
#define HOENN_DEX_NUZLEAF 23
#define HOENN_DEX_SHIFTRY 24
#define HOENN_DEX_NINCADA 42
#define HOENN_DEX_NINJASK 43
#define HOENN_DEX_SHEDINJA 44
#define HOENN_DEX_TAILLOW 25
#define HOENN_DEX_SWELLOW 26
#define HOENN_DEX_SHROOMISH 34
#define HOENN_DEX_BRELOOM 35
#define HOENN_DEX_SPINDA 114
#define HOENN_DEX_WINGULL 27
#define HOENN_DEX_PELIPPER 28
#define HOENN_DEX_SURSKIT 32
#define HOENN_DEX_MASQUERAIN 33
#define HOENN_DEX_WAILMER 99
#define HOENN_DEX_WAILORD 100
#define HOENN_DEX_SKITTY 61
#define HOENN_DEX_DELCATTY 62
#define HOENN_DEX_KECLEON 145
#define HOENN_DEX_BALTOY 131
#define HOENN_DEX_CLAYDOL 132
#define HOENN_DEX_NOSEPASS 60
#define HOENN_DEX_TORKOAL 105
#define HOENN_DEX_SABLEYE 68
#define HOENN_DEX_BARBOACH 127
#define HOENN_DEX_WHISCASH 128
#define HOENN_DEX_LUVDISC 183
#define HOENN_DEX_CORPHISH 129
#define HOENN_DEX_CRAWDAUNT 130
#define HOENN_DEX_FEEBAS 140
#define HOENN_DEX_MILOTIC 141
#define HOENN_DEX_CARVANHA 97
#define HOENN_DEX_SHARPEDO 98
#define HOENN_DEX_TRAPINCH 116
#define HOENN_DEX_VIBRAVA 117
#define HOENN_DEX_FLYGON 118
#define HOENN_DEX_MAKUHITA 48
#define HOENN_DEX_HARIYAMA 49
#define HOENN_DEX_ELECTRIKE 78
#define HOENN_DEX_MANECTRIC 79
#define HOENN_DEX_NUMEL 101
#define HOENN_DEX_CAMERUPT 102
#define HOENN_DEX_SPHEAL 173
#define HOENN_DEX_SEALEO 174
#define HOENN_DEX_WALREIN 175
#define HOENN_DEX_CACNEA 119
#define HOENN_DEX_CACTURNE 120
#define HOENN_DEX_SNORUNT 171
#define HOENN_DEX_GLALIE 172
#define HOENN_DEX_LUNATONE 125
#define HOENN_DEX_SOLROCK 126
#define HOENN_DEX_AZURILL 54
#define HOENN_DEX_SPOINK 110
#define HOENN_DEX_GRUMPIG 111
#define HOENN_DEX_PLUSLE 80
#define HOENN_DEX_MINUN 81
#define HOENN_DEX_MAWILE 69
#define HOENN_DEX_MEDITITE 76
#define HOENN_DEX_MEDICHAM 77
#define HOENN_DEX_SWABLU 121
#define HOENN_DEX_ALTARIA 122
#define HOENN_DEX_WYNAUT 160
#define HOENN_DEX_DUSKULL 148
#define HOENN_DEX_DUSCLOPS 149
#define HOENN_DEX_ROSELIA 94
#define HOENN_DEX_SLAKOTH 36
#define HOENN_DEX_VIGOROTH 37
#define HOENN_DEX_SLAKING 38
#define HOENN_DEX_GULPIN 95
#define HOENN_DEX_SWALOT 96
#define HOENN_DEX_TROPIUS 150
#define HOENN_DEX_WHISMUR 45
#define HOENN_DEX_LOUDRED 46
#define HOENN_DEX_EXPLOUD 47
#define HOENN_DEX_CLAMPERL 176
#define HOENN_DEX_HUNTAIL 177
#define HOENN_DEX_GOREBYSS 178
#define HOENN_DEX_ABSOL 152
#define HOENN_DEX_SHUPPET 146
#define HOENN_DEX_BANETTE 147
#define HOENN_DEX_SEVIPER 124
#define HOENN_DEX_ZANGOOSE 123
#define HOENN_DEX_RELICANTH 179
#define HOENN_DEX_ARON 70
#define HOENN_DEX_LAIRON 71
#define HOENN_DEX_AGGRON 72
#define HOENN_DEX_CASTFORM 142
#define HOENN_DEX_VOLBEAT 86
#define HOENN_DEX_ILLUMISE 87
#define HOENN_DEX_LILEEP 133
#define HOENN_DEX_CRADILY 134
#define HOENN_DEX_ANORITH 135
#define HOENN_DEX_ARMALDO 136
#define HOENN_DEX_RALTS 29
#define HOENN_DEX_KIRLIA 30
#define HOENN_DEX_GARDEVOIR 31
#define HOENN_DEX_BAGON 187
#define HOENN_DEX_SHELGON 188
#define HOENN_DEX_SALAMENCE 189
#define HOENN_DEX_BELDUM 190
#define HOENN_DEX_METANG 191
#define HOENN_DEX_METAGROSS 192
#define HOENN_DEX_REGIROCK 193
#define HOENN_DEX_REGICE 194
#define HOENN_DEX_REGISTEEL 195
#define HOENN_DEX_KYOGRE 198
#define HOENN_DEX_GROUDON 199
#define HOENN_DEX_RAYQUAZA 200
#define HOENN_DEX_LATIAS 196
#define HOENN_DEX_LATIOS 197
#define HOENN_DEX_JIRACHI 201
#define HOENN_DEX_DEOXYS 202
#define HOENN_DEX_CHIMECHO 151
#endif // GUARD_CONSTANTS_SPECIES_H #endif // GUARD_CONSTANTS_SPECIES_H
+16 -17
View File
@@ -3282,25 +3282,24 @@ extern const u32 gBattleTerrainPalette_StadiumDrake[];
extern const u32 gBattleTerrainPalette_StadiumWallace[]; extern const u32 gBattleTerrainPalette_StadiumWallace[];
// pokedex // pokedex
extern const u32 gPokedexMenu2_Gfx[]; extern const u32 gPokedexInterface_Gfx[];
extern const u16 gPokedexText_Pal[]; extern const u16 gPokedexBgHoenn_Pal[];
extern const u32 gPokedexMenu_Gfx[]; extern const u32 gPokedexMenu_Gfx[];
extern const u8 gPokedexTilemap_Main[]; extern const u8 gPokedexList_Tilemap[];
extern const u8 gPokedexTilemap_MainUnderlay[]; extern const u8 gPokedexListUnderlay_Tilemap[];
extern const u8 gPokedexTilemap_StartMenu1[]; extern const u8 gPokedexStartMenuMain_Tilemap[];
extern const u8 gPokedexTilemap_StartMenu2[]; extern const u8 gPokedexStartMenuSearchResults_Tilemap[];
extern const u16 gPokedexHoennBg_Pal[]; extern const u16 gPokedexSearchResults_Pal[];
extern const u16 gPokedexText_Pal[]; extern const u16 gPokedexBgNational_Pal[];
extern const u16 gPokedexNationalBg_Pal[]; extern const u8 gPokedexInfoScreen_Tilemap[];
extern const u8 gPokedexTilemap_DescriptionScreen[]; extern const u8 gPokedexCryScreen_Tilemap[];
extern const u8 gPokedexTilemap_CryScreen[]; extern const u8 gPokedexSizeScreen_Tilemap[];
extern const u8 gPokedexTilemap_SizeScreen[]; extern const u8 gPokedexScreenSelectBarMain_Tilemap[];
extern const u8 gPokedexTilemap_ScreenSelectBar1[]; extern const u8 gPokedexScreenSelectBarSubmenu_Tilemap[];
extern const u8 gPokedexTilemap_ScreenSelectBar2[]; extern const u16 gPokedexCaughtScreen_Pal[];
extern const u16 gPokedexCaughtScreenFade_Pal[];
extern const u32 gPokedexSearchMenu_Gfx[]; extern const u32 gPokedexSearchMenu_Gfx[];
extern const u32 gPokedexSearch2_Tilemap[]; extern const u32 gPokedexSearchMenuHoenn_Tilemap[];
extern const u32 gPokedexSearch1_Tilemap[]; extern const u32 gPokedexSearchMenuNational_Tilemap[];
extern const u16 gPokedexSearchMenu_Pal[]; extern const u16 gPokedexSearchMenu_Pal[];
// berry tag screen // berry tag screen
+3 -7
View File
@@ -2,11 +2,7 @@
#define GUARD_POKEDEX_H #define GUARD_POKEDEX_H
extern u8 gUnusedPokedexU8; extern u8 gUnusedPokedexU8;
extern void (*gUnknown_030060B4)(void); extern void (*gPokedexVBlankCB)(void);
#define KANTO_DEX_COUNT 151
#define HOENN_DEX_COUNT 202
#define NATIONAL_DEX_COUNT 386
enum enum
{ {
@@ -39,12 +35,12 @@ void ResetPokedex(void);
u16 GetPokedexHeightWeight(u16 dexNum, u8 data); u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
u16 GetNationalPokedexCount(u8); u16 GetNationalPokedexCount(u8);
u16 GetHoennPokedexCount(u8); u16 GetHoennPokedexCount(u8);
u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality); u8 DisplayCaughtMonDexPage(u16 dexNum, u32 otId, u32 personality);
s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId); s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16); u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16);
bool16 HasAllHoennMons(void); bool16 HasAllHoennMons(void);
void ResetPokedexScrollPositions(void); void ResetPokedexScrollPositions(void);
bool16 HasAllMons(void); bool16 HasAllMons(void);
void CB2_Pokedex(void); void CB2_OpenPokedex(void);
#endif // GUARD_POKEDEX_H #endif // GUARD_POKEDEX_H
+8 -8
View File
@@ -1,10 +1,10 @@
#ifndef GUARD_POKEDEX_CRY_SCREEN_H #ifndef GUARD_POKEDEX_CRY_SCREEN_H
#define GUARD_POKEDEX_CRY_SCREEN_H #define GUARD_POKEDEX_CRY_SCREEN_H
struct CryRelatedStruct struct CryScreenWindow
{ {
u16 unk0; u16 unk0; // Assigned to val that's never read
u8 unk2; u8 unk2; // Never read
u8 paletteNo; u8 paletteNo;
u8 xPos; u8 xPos;
u8 yPos; u8 yPos;
@@ -12,10 +12,10 @@ struct CryRelatedStruct
extern u8 gDexCryScreenState; extern u8 gDexCryScreenState;
bool8 sub_8145354(struct CryRelatedStruct*, u8); bool8 LoadCryWaveformWindow(struct CryScreenWindow*, u8);
void sub_814545C(u8); void UpdateCryWaveformWindow(u8);
void sub_8145534(u16); void CryScreenPlayButton(u16);
bool8 sub_8145850(struct CryRelatedStruct*, u8); bool8 LoadCryMeter(struct CryScreenWindow*, u8);
void sub_8145914(void); void FreeCryScreen(void);
#endif #endif
+1 -1
View File
@@ -10263,7 +10263,7 @@ static void Cmd_displaydexinfo(void)
if (!gPaletteFade.active) if (!gPaletteFade.active)
{ {
FreeAllWindowBuffers(); FreeAllWindowBuffers();
gBattleCommunication[TASK_ID] = CreateDexDisplayMonDataTask(SpeciesToNationalPokedexNum(species), gBattleCommunication[TASK_ID] = DisplayCaughtMonDexPage(SpeciesToNationalPokedexNum(species),
gBattleMons[gBattlerTarget].otId, gBattleMons[gBattlerTarget].otId,
gBattleMons[gBattlerTarget].personality); gBattleMons[gBattlerTarget].personality);
gBattleCommunication[0]++; gBattleCommunication[0]++;
+1
View File
@@ -23,6 +23,7 @@
#include "constants/vars.h" #include "constants/vars.h"
#include "event_data.h" #include "event_data.h"
#include "random.h" #include "random.h"
#include "constants/species.h"
enum enum
{ {
+17 -22
View File
@@ -1257,32 +1257,27 @@ const u16 gFrontierPassMapCursor_Pal[] = INCBIN_U16("graphics/frontier_pass/map_
const u16 gFrontierPassMedalsSilver_Pal[] = INCBIN_U16("graphics/frontier_pass/silver.gbapal"); const u16 gFrontierPassMedalsSilver_Pal[] = INCBIN_U16("graphics/frontier_pass/silver.gbapal");
const u16 gFrontierPassMedalsGold_Pal[] = INCBIN_U16("graphics/frontier_pass/gold.gbapal"); const u16 gFrontierPassMedalsGold_Pal[] = INCBIN_U16("graphics/frontier_pass/gold.gbapal");
const u16 gPokedexText_Pal[] = INCBIN_U16("graphics/pokedex/text.gbapal"); // Pokedex
const u16 gPokedexBgHoenn_Pal[] = INCBIN_U16("graphics/pokedex/bg_hoenn.gbapal");
const u16 gPokedexCaughtScreenFade_Pal[] = INCBIN_U16("graphics/pokedex/fade.gbapal"); const u16 gPokedexCaughtScreen_Pal[] = INCBIN_U16("graphics/pokedex/caught_screen.gbapal");
const u16 gPokedexSearchResults_Pal[] = INCBIN_U16("graphics/pokedex/search_results_bg.gbapal");
const u16 gPokedexHoennBg_Pal[] = INCBIN_U16("graphics/pokedex/hoenn_bg.gbapal"); const u16 gPokedexBgNational_Pal[] = INCBIN_U16("graphics/pokedex/bg_national.gbapal");
const u16 gPokedexNationalBg_Pal[] = INCBIN_U16("graphics/pokedex/national_bg.gbapal");
const u32 gPokedexMenu_Gfx[] = INCBIN_U32("graphics/pokedex/menu.4bpp.lz"); const u32 gPokedexMenu_Gfx[] = INCBIN_U32("graphics/pokedex/menu.4bpp.lz");
const u32 gPokedexMenu2_Gfx[] = INCBIN_U32("graphics/pokedex/menu2.4bpp.lz"); const u32 gPokedexInterface_Gfx[] = INCBIN_U32("graphics/pokedex/interface.4bpp.lz");
const u32 gUnused_PokedexNoBall[] = INCBIN_U32("graphics/pokedex/noball_unused.4bpp.lz"); const u32 gUnused_PokedexNoBall[] = INCBIN_U32("graphics/pokedex/noball_unused.4bpp.lz");
const u32 gPokedexStartMenuMain_Tilemap[] = INCBIN_U32("graphics/pokedex/start_menu_main.bin.lz");
const u32 gPokedexTilemap_StartMenu1[] = INCBIN_U32("graphics/pokedex/tilemap1.bin.lz"); const u32 gPokedexStartMenuSearchResults_Tilemap[] = INCBIN_U32("graphics/pokedex/start_menu_search_results.bin.lz");
const u32 gPokedexTilemap_StartMenu2[] = INCBIN_U32("graphics/pokedex/tilemap2.bin.lz"); const u32 gPokedexList_Tilemap[] = INCBIN_U32("graphics/pokedex/list.bin.lz");
const u32 gPokedexTilemap_Main[] = INCBIN_U32("graphics/pokedex/tilemap3.bin.lz"); const u32 gPokedexListUnderlay_Tilemap[] = INCBIN_U32("graphics/pokedex/list_underlay.bin.lz");
const u32 gPokedexTilemap_MainUnderlay[] = INCBIN_U32("graphics/pokedex/tilemap4.bin.lz"); const u32 gPokedexSizeScreen_Tilemap[] = INCBIN_U32("graphics/pokedex/size_screen.bin.lz");
const u32 gPokedexTilemap_SizeScreen[] = INCBIN_U32("graphics/pokedex/tilemap5.bin.lz"); const u32 gPokedexScreenSelectBarMain_Tilemap[] = INCBIN_U32("graphics/pokedex/screen_select_bar_main.bin.lz");
const u32 gPokedexTilemap_ScreenSelectBar1[] = INCBIN_U32("graphics/pokedex/tilemap6.bin.lz"); const u32 gPokedexScreenSelectBarSubmenu_Tilemap[] = INCBIN_U32("graphics/pokedex/screen_select_bar_submenu.bin.lz");
const u32 gPokedexTilemap_ScreenSelectBar2[] = INCBIN_U32("graphics/pokedex/tilemap7.bin.lz"); const u32 gPokedexInfoScreen_Tilemap[] = INCBIN_U32("graphics/pokedex/info_screen.bin.lz");
const u32 gPokedexTilemap_DescriptionScreen[] = INCBIN_U32("graphics/pokedex/tilemap8.bin.lz"); const u32 gPokedexCryScreen_Tilemap[] = INCBIN_U32("graphics/pokedex/cry_screen.bin.lz");
const u32 gPokedexTilemap_CryScreen[] = INCBIN_U32("graphics/pokedex/tilemap9.bin.lz");
const u16 gPokedexSearchMenu_Pal[] = INCBIN_U16("graphics/pokedex/search_menu.gbapal"); const u16 gPokedexSearchMenu_Pal[] = INCBIN_U16("graphics/pokedex/search_menu.gbapal");
const u32 gPokedexSearchMenu_Gfx[] = INCBIN_U32("graphics/pokedex/search_menu.4bpp.lz"); const u32 gPokedexSearchMenu_Gfx[] = INCBIN_U32("graphics/pokedex/search_menu.4bpp.lz");
const u32 gPokedexSearch1_Tilemap[] = INCBIN_U32("graphics/pokedex/search1.bin.lz"); const u32 gPokedexSearchMenuNational_Tilemap[] = INCBIN_U32("graphics/pokedex/search_menu_national.bin.lz");
const u32 gPokedexSearch2_Tilemap[] = INCBIN_U32("graphics/pokedex/search2.bin.lz"); const u32 gPokedexSearchMenuHoenn_Tilemap[] = INCBIN_U32("graphics/pokedex/search_menu_hoenn.bin.lz");
const u16 gSummaryScreenPowAcc_Tilemap[] = INCBIN_U16("graphics/interface/powacc_tilemap.bin"); const u16 gSummaryScreenPowAcc_Tilemap[] = INCBIN_U16("graphics/interface/powacc_tilemap.bin");
+1920 -1558
View File
File diff suppressed because it is too large. Load diff
+21 -19
View File
@@ -66,7 +66,7 @@ struct PokeDexAreaScreen
/*0x6E0*/ u16 numAreaMarkerSprites; /*0x6E0*/ u16 numAreaMarkerSprites;
/*0x6E2*/ u16 unk6E2; /*0x6E2*/ u16 unk6E2;
/*0x6E4*/ u16 unk6E4; /*0x6E4*/ u16 unk6E4;
/*0x6E8*/ u8 *errno; /*0x6E8*/ u8 *screenSwitchState;
/*0x6EC*/ struct RegionMap regionMap; /*0x6EC*/ struct RegionMap regionMap;
/*0xF70*/ u8 charBuffer[0x40]; /*0xF70*/ u8 charBuffer[0x40];
/*0xFB0*/ struct Sprite * areaUnknownSprites[3]; /*0xFB0*/ struct Sprite * areaUnknownSprites[3];
@@ -83,11 +83,11 @@ static u16 GetRegionMapSectionId(u8, u8);
static bool8 MapHasMon(const struct WildPokemonHeader *, u16); static bool8 MapHasMon(const struct WildPokemonHeader *, u16);
static bool8 MonListHasMon(const struct WildPokemonInfo *, u16, u16); static bool8 MonListHasMon(const struct WildPokemonInfo *, u16, u16);
static void DoAreaGlow(void); static void DoAreaGlow(void);
static void Task_PokedexAreaScreen_0(u8); static void Task_ShowPokedexAreaScreen(u8);
static void CreateAreaMarkerSprites(void); static void CreateAreaMarkerSprites(void);
static void LoadAreaUnknownGraphics(void); static void LoadAreaUnknownGraphics(void);
static void CreateAreaUnknownSprites(void); static void CreateAreaUnknownSprites(void);
static void Task_PokedexAreaScreen_1(u8); static void Task_HandlePokedexAreaScreenInput(u8);
static void sub_813D6B4(void); static void sub_813D6B4(void);
static void DestroyAreaMarkerSprites(void); static void DestroyAreaMarkerSprites(void);
@@ -637,21 +637,23 @@ static void DoAreaGlow(void)
} }
} }
void ShowPokedexAreaScreen(u16 species, u8 *errno) #define tState data[0]
void ShowPokedexAreaScreen(u16 species, u8 *screenSwitchState)
{ {
u8 taskId; u8 taskId;
sPokedexAreaScreen = AllocZeroed(sizeof(*sPokedexAreaScreen)); sPokedexAreaScreen = AllocZeroed(sizeof(*sPokedexAreaScreen));
sPokedexAreaScreen->species = species; sPokedexAreaScreen->species = species;
sPokedexAreaScreen->errno = errno; sPokedexAreaScreen->screenSwitchState = screenSwitchState;
errno[0] = 0; screenSwitchState[0] = 0;
taskId = CreateTask(Task_PokedexAreaScreen_0, 0); taskId = CreateTask(Task_ShowPokedexAreaScreen, 0);
gTasks[taskId].data[0] = 0; gTasks[taskId].tState = 0;
} }
static void Task_PokedexAreaScreen_0(u8 taskId) static void Task_ShowPokedexAreaScreen(u8 taskId)
{ {
switch (gTasks[taskId].data[0]) switch (gTasks[taskId].tState)
{ {
case 0: case 0:
ResetSpriteData(); ResetSpriteData();
@@ -702,21 +704,21 @@ static void Task_PokedexAreaScreen_0(u8 taskId)
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON); SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON);
break; break;
case 11: case 11:
gTasks[taskId].func = Task_PokedexAreaScreen_1; gTasks[taskId].func = Task_HandlePokedexAreaScreenInput;
gTasks[taskId].data[0] = 0; gTasks[taskId].tState = 0;
return; return;
} }
gTasks[taskId].data[0]++; gTasks[taskId].tState++;
} }
static void Task_PokedexAreaScreen_1(u8 taskId) static void Task_HandlePokedexAreaScreenInput(u8 taskId)
{ {
DoAreaGlow(); DoAreaGlow();
switch (gTasks[taskId].data[0]) switch (gTasks[taskId].tState)
{ {
default: default:
gTasks[taskId].data[0] = 0; gTasks[taskId].tState = 0;
// fall through // fall through
case 0: case 0:
if (gPaletteFade.active) if (gPaletteFade.active)
@@ -737,13 +739,13 @@ static void Task_PokedexAreaScreen_1(u8 taskId)
return; return;
break; break;
case 2: case 2:
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0)); BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB_BLACK);
break; break;
case 3: case 3:
if (gPaletteFade.active) if (gPaletteFade.active)
return; return;
DestroyAreaMarkerSprites(); DestroyAreaMarkerSprites();
sPokedexAreaScreen->errno[0] = gTasks[taskId].data[1]; sPokedexAreaScreen->screenSwitchState[0] = gTasks[taskId].data[1];
sub_813D6B4(); sub_813D6B4();
DestroyTask(taskId); DestroyTask(taskId);
FreePokedexAreaMapBgNum(); FreePokedexAreaMapBgNum();
@@ -751,7 +753,7 @@ static void Task_PokedexAreaScreen_1(u8 taskId)
return; return;
} }
gTasks[taskId].data[0]++; gTasks[taskId].tState++;
} }
static void sub_813D6B4(void) static void sub_813D6B4(void)
+250 -201
View File
@@ -9,35 +9,53 @@
#include "trig.h" #include "trig.h"
#include "window.h" #include "window.h"
struct PokedexCryVolumeMeter { // Cry meter needle positions
s8 unk0; //
s8 unk1; // 0
u8 unk2; // 32 . . -32
u16 needleSpriteId; // . .
// 64 . . -64
// . .
// . .
// 96 . . -96
// 127
//
#define MIN_NEEDLE_POS 32
#define MAX_NEEDLE_POS -32
#define NEEDLE_MOVE_INCREMENT 5
#define WAVEFORM_WINDOW_HEIGHT 56
struct PokedexCryMeterNeedle {
s8 rotation;
s8 targetRotation;
u8 moveIncrement;
u16 spriteId;
}; };
struct PokedexCryScreen struct PokedexCryScreen
{ {
u8 unk0[16]; u8 cryWaveformBuffer[16];
u8 unk10; u8 cryState;
u8 unk11; u8 playhead;
u8 unk12; u8 waveformPreviousY;
u16 unk14; u16 unk; // Never read
u8 unk16; u8 playStartPos;
u16 species; u16 species;
u8 unk1A; u8 cryOverrideCountdown;
u8 unk1B; u8 cryRepeatDelay;
}; };
static void sub_8145588(u16); static void PlayCryScreenCry(u16);
static void sub_81455A8(void); static void BufferCryWaveformSegment(void);
static void sub_814560C(void); static void DrawWaveformFlatline(void);
static void sub_8145648(u8); static void AdvancePlayhead(u8);
static void sub_81456A8(u8, u8); static void DrawWaveformSegment(u8, u8);
static void sub_8145814(u8); static void DrawWaveformWindow(u8);
static void sub_8145824(u8, s16, u8); static void ShiftWaveformOver(u8, s16, bool8);
static void sub_814596C(struct Sprite *); static void SpriteCB_CryMeterNeedle(struct Sprite *);
static void sub_8145B24(s8); static void SetCryMeterNeedleTarget(s8);
// IWRAM common // IWRAM common
u8 gDexCryScreenState; u8 gDexCryScreenState;
@@ -45,16 +63,16 @@ u8 gDexCryScreenState;
// EWRAM vars // EWRAM vars
static EWRAM_DATA struct PokedexCryScreen *sDexCryScreen = NULL; static EWRAM_DATA struct PokedexCryScreen *sDexCryScreen = NULL;
static EWRAM_DATA u8 *sCryWaveformWindowTiledata = NULL; static EWRAM_DATA u8 *sCryWaveformWindowTiledata = NULL;
static EWRAM_DATA struct PokedexCryVolumeMeter *sCryVolumeMeter = NULL; static EWRAM_DATA struct PokedexCryMeterNeedle *sCryMeterNeedle = NULL;
const u16 CryMeterNeedlePalette[] = INCBIN_U16("graphics/pokedex/cry_meter_needle.gbapal"); static const u16 sCryMeterNeedle_Pal[] = INCBIN_U16("graphics/pokedex/cry_meter_needle.gbapal");
const u8 CryMeterNeedleTiles[] = INCBIN_U8("graphics/pokedex/cry_meter_needle.4bpp"); static const u8 sCryMeterNeedle_Gfx[] = INCBIN_U8("graphics/pokedex/cry_meter_needle.4bpp");
const u16 gUnknown_085B8378[] = INCBIN_U16("graphics/pokedex/cry_meter_map.bin"); static const u16 sCryMeter_Tilemap[] = INCBIN_U16("graphics/pokedex/cry_meter_map.bin"); // Unused
const u16 gUnknown_085B8418[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal"); static const u16 sCryMeter_Pal[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal");
const u8 gUnknown_085B8438[] = INCBIN_U8("graphics/pokedex/cry_meter.4bpp.lz"); static const u8 sCryMeter_Gfx[] = INCBIN_U8("graphics/pokedex/cry_meter.4bpp.lz");
const u16 gUnknown_085B8770[][72] = static const u16 sWaveformOffsets[][72] =
{ {
{ {
0x0000, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C, 0x0000, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C,
@@ -139,33 +157,36 @@ const u16 gUnknown_085B8770[][72] =
} }
}; };
const u16 gUnknown_085B8BF0[] = INCBIN_U16("graphics/pokedex/85B8C10.gbapal"); static const u16 sCryScreenBg_Pal[] = INCBIN_U16("graphics/pokedex/cry_screen_bg.gbapal");
const u8 gUnknown_085B8C10[] = INCBIN_U8("graphics/pokedex/85B8C10.4bpp"); static const u8 sCryScreenBg_Gfx[] = INCBIN_U8("graphics/pokedex/cry_screen_bg.4bpp");
const u8 gUnknown_085B8C30[] = {0xF0, 0x0F}; static const u8 sWaveformTileDataNybbleMasks[] = {0xF0, 0x0F};
const u8 gUnknown_085B8C32[][16] =
// Waveform is blue in the middle (8) grading to white at peaks (15)
// Split into two arrays for the two vertical slice halves
static const u8 sWaveformColor[][16] =
{ {
{ {
0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 15, 14, 13, 12, 11, 10, 9, 8,
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F 8, 9, 10, 11, 12, 13, 14, 15,
}, { }, {
0xF0, 0xE0, 0xD0, 0xC0, 0xB0, 0xA0, 0x90, 0x80, 15 << 4, 14 << 4, 13 << 4, 12 << 4, 11 << 4, 10 << 4, 9 << 4, 8 << 4,
0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0 8 << 4, 9 << 4, 10 << 4, 11 << 4, 12 << 4, 13 << 4, 14 << 4, 15 << 4,
} }
}; };
const union AnimCmd gSpriteAnim_85B8C54[] = static const union AnimCmd sSpriteAnim_CryMeterNeedle[] =
{ {
ANIMCMD_FRAME(0, 30), ANIMCMD_FRAME(0, 30),
ANIMCMD_END ANIMCMD_END
}; };
const union AnimCmd *const gSpriteAnimTable_85B8C5C[] = static const union AnimCmd *const sSpriteAnimTable_CryMeterNeedle[] =
{ {
gSpriteAnim_85B8C54 sSpriteAnim_CryMeterNeedle
}; };
const struct OamData gOamData_85B8C60 = static const struct OamData sOamData_CryMeterNeedle =
{ {
.y = 160, .y = 160,
.affineMode = ST_OAM_AFFINE_NORMAL, .affineMode = ST_OAM_AFFINE_NORMAL,
@@ -179,33 +200,33 @@ const struct OamData gOamData_85B8C60 =
.paletteNum = 0, .paletteNum = 0,
}; };
const struct SpriteTemplate gUnknown_085B8C68 = static const struct SpriteTemplate sCryMeterNeedleSpriteTemplate =
{ {
0x2000, .tileTag = 0x2000,
0x2000, .paletteTag = 0x2000,
&gOamData_85B8C60, .oam = &sOamData_CryMeterNeedle,
gSpriteAnimTable_85B8C5C, .anims = sSpriteAnimTable_CryMeterNeedle,
NULL, .images = NULL,
gDummySpriteAffineAnimTable, .affineAnims = gDummySpriteAffineAnimTable,
sub_814596C .callback = SpriteCB_CryMeterNeedle
}; };
const struct SpriteSheet gCryMeterNeedleSpriteSheets[] = static const struct SpriteSheet sCryMeterNeedleSpriteSheets[] =
{ {
{CryMeterNeedleTiles, 0x800, 0x2000}, {sCryMeterNeedle_Gfx, 0x800, 0x2000},
{} {}
}; };
const struct SpritePalette gCryMeterNeedleSpritePalettes[] = static const struct SpritePalette sCryMeterNeedleSpritePalettes[] =
{ {
{CryMeterNeedlePalette, 0x2000}, {sCryMeterNeedle_Pal, 0x2000},
{} {}
}; };
bool8 sub_8145354(struct CryRelatedStruct *arg0, u8 windowId) bool8 LoadCryWaveformWindow(struct CryScreenWindow *window, u8 windowId)
{ {
u8 i; u8 i;
u8 retVal = FALSE; u8 finished = FALSE;
switch (gDexCryScreenState) switch (gDexCryScreenState)
{ {
@@ -216,112 +237,119 @@ bool8 sub_8145354(struct CryRelatedStruct *arg0, u8 windowId)
sCryWaveformWindowTiledata = (u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA); sCryWaveformWindowTiledata = (u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA);
} }
sDexCryScreen->unk14 = arg0->unk0; sDexCryScreen->unk = window->unk0;
sDexCryScreen->unk16 = arg0->yPos; sDexCryScreen->playStartPos = window->yPos;
sDexCryScreen->unk1A = 0; sDexCryScreen->cryOverrideCountdown = 0;
sDexCryScreen->unk1B = 0; sDexCryScreen->cryRepeatDelay = 0;
sDexCryScreen->unk10 = 0; sDexCryScreen->cryState = 0;
sDexCryScreen->unk12 = 28; sDexCryScreen->waveformPreviousY = WAVEFORM_WINDOW_HEIGHT / 2;
sDexCryScreen->unk11 = 0; sDexCryScreen->playhead = 0;
sub_8145824(windowId, -8 * arg0->xPos, 1); ShiftWaveformOver(windowId, -8 * window->xPos, TRUE); // Does nothing
for (i = 0; i < 224; i++) for (i = 0; i < 224; i++)
CopyToWindowPixelBuffer(windowId, gUnknown_085B8C10, TILE_SIZE_4BPP, i); CopyToWindowPixelBuffer(windowId, sCryScreenBg_Gfx, TILE_SIZE_4BPP, i);
gDexCryScreenState++; gDexCryScreenState++;
break; break;
case 1: case 1:
for (i = 0; i < sDexCryScreen->unk16 * 8; i++) for (i = 0; i < sDexCryScreen->playStartPos * 8; i++)
sub_81456A8(i, 0); DrawWaveformSegment(i, 0);
gDexCryScreenState++; gDexCryScreenState++;
break; break;
case 2: case 2:
sub_8145814(windowId); DrawWaveformWindow(windowId);
LoadPalette(gUnknown_085B8BF0, arg0->paletteNo * 16, 32); LoadPalette(sCryScreenBg_Pal, window->paletteNo * 16, 32);
retVal = TRUE; finished = TRUE;
break; break;
} }
return retVal; return finished;
} }
void sub_814545C(u8 windowId) void UpdateCryWaveformWindow(u8 windowId)
{ {
u8 var0; u8 waveformIdx;
sub_8145814(windowId); DrawWaveformWindow(windowId);
sub_8145648(windowId); AdvancePlayhead(windowId);
if (sDexCryScreen->unk1B)
sDexCryScreen->unk1B--;
if (sDexCryScreen->unk1A) // Cry cant be replayed until this counter is done
if (sDexCryScreen->cryRepeatDelay)
sDexCryScreen->cryRepeatDelay--;
// Once a cry replay has started, it waits for this countdown before playing
if (sDexCryScreen->cryOverrideCountdown)
{ {
sDexCryScreen->unk1A--; sDexCryScreen->cryOverrideCountdown--;
if (!sDexCryScreen->unk1A) if (!sDexCryScreen->cryOverrideCountdown)
{ {
sub_8145588(sDexCryScreen->species); PlayCryScreenCry(sDexCryScreen->species);
sub_814560C(); DrawWaveformFlatline();
return; return;
} }
} }
if (sDexCryScreen->unk10 == 0) // No cry playing
if (sDexCryScreen->cryState == 0)
{ {
sub_814560C(); DrawWaveformFlatline();
return; return;
} }
if (sDexCryScreen->unk10 == 1) // Cry playing, buffer waveform
if (sDexCryScreen->cryState == 1)
{ {
sub_81455A8(); BufferCryWaveformSegment();
} }
else if (sDexCryScreen->unk10 > 8) else if (sDexCryScreen->cryState > 8)
{ {
// Buffered waveform exhausted, end or buffer more
if (!IsCryPlaying()) if (!IsCryPlaying())
{ {
sub_814560C(); DrawWaveformFlatline();
sDexCryScreen->unk10 = 0; sDexCryScreen->cryState = 0;
return; return;
} }
sub_81455A8(); BufferCryWaveformSegment();
sDexCryScreen->unk10 = 1; sDexCryScreen->cryState = 1;
} }
var0 = 2 * (sDexCryScreen->unk10 - 1); // Draw cry
sub_81456A8(sDexCryScreen->unk16 * 8 + sDexCryScreen->unk11 - 2, sDexCryScreen->unk0[var0]); waveformIdx = 2 * (sDexCryScreen->cryState - 1);
sub_81456A8(sDexCryScreen->unk16 * 8 + sDexCryScreen->unk11 - 1, sDexCryScreen->unk0[var0 + 1]); DrawWaveformSegment(sDexCryScreen->playStartPos * 8 + sDexCryScreen->playhead - 2, sDexCryScreen->cryWaveformBuffer[waveformIdx]);
sDexCryScreen->unk10++; DrawWaveformSegment(sDexCryScreen->playStartPos * 8 + sDexCryScreen->playhead - 1, sDexCryScreen->cryWaveformBuffer[waveformIdx + 1]);
sDexCryScreen->cryState++;
} }
void sub_8145534(u16 species) void CryScreenPlayButton(u16 species)
{ {
if (gMPlayInfo_BGM.status & MUSICPLAYER_STATUS_PAUSE && !sDexCryScreen->unk1A) if (gMPlayInfo_BGM.status & MUSICPLAYER_STATUS_PAUSE && !sDexCryScreen->cryOverrideCountdown)
{ {
if (!sDexCryScreen->unk1B) if (!sDexCryScreen->cryRepeatDelay)
{ {
sDexCryScreen->unk1B = 4; sDexCryScreen->cryRepeatDelay = 4;
if (IsCryPlaying() == TRUE) if (IsCryPlaying() == TRUE)
{ {
StopCry(); StopCry();
sDexCryScreen->species = species; sDexCryScreen->species = species;
sDexCryScreen->unk1A = 2; sDexCryScreen->cryOverrideCountdown = 2;
} }
else else
{ {
sub_8145588(species); PlayCryScreenCry(species);
} }
} }
} }
} }
static void sub_8145588(u16 species) static void PlayCryScreenCry(u16 species)
{ {
PlayCry2(species, 0, 0x7d, 10); PlayCry2(species, 0, 125, 10);
sDexCryScreen->unk10 = 1; sDexCryScreen->cryState = 1;
} }
static void sub_81455A8(void) static void BufferCryWaveformSegment(void)
{ {
u8 i; u8 i;
s8 *baseBuffer; s8 *baseBuffer;
@@ -333,197 +361,218 @@ static void sub_81455A8(void)
baseBuffer = gSoundInfo.pcmBuffer + (gSoundInfo.pcmDmaPeriod + 1 - gPcmDmaCounter) * gSoundInfo.pcmSamplesPerVBlank; baseBuffer = gSoundInfo.pcmBuffer + (gSoundInfo.pcmDmaPeriod + 1 - gPcmDmaCounter) * gSoundInfo.pcmSamplesPerVBlank;
buffer = baseBuffer + 0x630; buffer = baseBuffer + 0x630;
for (i = 0; i < 16; i++) for (i = 0; i < ARRAY_COUNT(sDexCryScreen->cryWaveformBuffer); i++)
sDexCryScreen->unk0[i] = buffer[i * 2] * 2; sDexCryScreen->cryWaveformBuffer[i] = buffer[i * 2] * 2;
} }
static void sub_814560C(void) static void DrawWaveformFlatline(void)
{ {
sub_81456A8(sDexCryScreen->unk16 * 8 + sDexCryScreen->unk11 - 2, 0); DrawWaveformSegment(sDexCryScreen->playStartPos * 8 + sDexCryScreen->playhead - 2, 0);
sub_81456A8(sDexCryScreen->unk16 * 8 + sDexCryScreen->unk11 - 1, 0); DrawWaveformSegment(sDexCryScreen->playStartPos * 8 + sDexCryScreen->playhead - 1, 0);
} }
static void sub_8145648(u8 windowId) static void AdvancePlayhead(u8 windowId)
{ {
u8 i; u8 i;
u16 offset; u16 offset;
sub_8145824(windowId, sDexCryScreen->unk11, 0); ShiftWaveformOver(windowId, sDexCryScreen->playhead, FALSE);
sDexCryScreen->unk11 += 2; sDexCryScreen->playhead += 2;
offset = (sDexCryScreen->unk11 / 8 + sDexCryScreen->unk16 + 1) % 32; offset = (sDexCryScreen->playhead / 8 + sDexCryScreen->playStartPos + 1) % 32;
for (i = 0; i < 7; i++) for (i = 0; i < 7; i++)
CopyToWindowPixelBuffer(windowId, gUnknown_085B8C10, TILE_SIZE_4BPP, offset + (i * TILE_SIZE_4BPP)); CopyToWindowPixelBuffer(windowId, sCryScreenBg_Gfx, TILE_SIZE_4BPP, offset + (i * TILE_SIZE_4BPP));
} }
static void sub_81456A8(u8 a0, u8 a1) // Waveform segments are drawn in alternate vertical slices
// Note that the waveform isnt put on screen until DrawWaveformWindow
static void DrawWaveformSegment(u8 position, u8 amplitude)
{ {
u8 sp0; // Position is a bitfield containing the play start pos, the playhead pos, and which vertical slice half to draw
u8 r6; #define PLAY_START_POS (position >> 3)
u8 r8; #define PLAYHEAD_POS (position & ((1 << 3) - 1))
u16 offset; #define VERT_SLICE (position & 1)
u16 r1;
u8 i;
r1 = (a1 + 127) * 256; u8 currentPointY;
i = r1 / 1152.0; u8 nybble;
if (i > 55) u16 offset;
i = 55; u16 temp;
sp0 = i; u8 y;
r6 = a0 & 1;
if (i > sDexCryScreen->unk12) temp = (amplitude + 127) * 256;
y = temp / 1152.0;
if (y > WAVEFORM_WINDOW_HEIGHT - 1)
y = WAVEFORM_WINDOW_HEIGHT - 1;
currentPointY = y;
nybble = VERT_SLICE;
if (y > sDexCryScreen->waveformPreviousY)
{ {
// Current point lower than previous point, draw point and draw line up to previous
do do
{ {
offset = gUnknown_085B8770[a0 & 0x7][i] + (a0 / 8) * TILE_SIZE_4BPP; offset = sWaveformOffsets[PLAYHEAD_POS][y] + PLAY_START_POS * TILE_SIZE_4BPP;
sCryWaveformWindowTiledata[offset] &= gUnknown_085B8C30[r6]; sCryWaveformWindowTiledata[offset] &= sWaveformTileDataNybbleMasks[nybble];
sCryWaveformWindowTiledata[offset] |= gUnknown_085B8C32[r6][((i / 3) - 1) & 0x0F]; sCryWaveformWindowTiledata[offset] |= sWaveformColor[nybble][((y / 3) - 1) & 0x0F];
i--; y--;
} while (i > sDexCryScreen->unk12); } while (y > sDexCryScreen->waveformPreviousY);
} }
else else
{ {
// Current point higher than previous point, draw point and draw line down to previous
do do
{ {
offset = gUnknown_085B8770[a0 & 0x7][i] + (a0 / 8) * TILE_SIZE_4BPP; offset = sWaveformOffsets[PLAYHEAD_POS][y] + PLAY_START_POS * TILE_SIZE_4BPP;
sCryWaveformWindowTiledata[offset] &= gUnknown_085B8C30[r6]; sCryWaveformWindowTiledata[offset] &= sWaveformTileDataNybbleMasks[nybble];
sCryWaveformWindowTiledata[offset] |= gUnknown_085B8C32[r6][((i / 3) - 1) & 0x0F]; sCryWaveformWindowTiledata[offset] |= sWaveformColor[nybble][((y / 3) - 1) & 0x0F];
i++; y++;
} while (i < sDexCryScreen->unk12); } while (y < sDexCryScreen->waveformPreviousY);
} }
sDexCryScreen->unk12 = sp0; sDexCryScreen->waveformPreviousY = currentPointY;
} }
static void sub_8145814(u8 windowId) static void DrawWaveformWindow(u8 windowId)
{ {
CopyWindowToVram(windowId, 2); CopyWindowToVram(windowId, 2);
} }
static void sub_8145824(u8 windowId, s16 arg1, u8 arg2) // rsVertical is leftover from a very different version of this function in RS
// In RS, when TRUE it would use VOFS and when FALSE it would use HOFS (only FALSE was used)
// Here when TRUE it does nothing
static void ShiftWaveformOver(u8 windowId, s16 offset, bool8 rsVertical)
{ {
if (!arg2) if (!rsVertical)
{ {
u8 bg = GetWindowAttribute(windowId, WINDOW_BG); u8 bg = GetWindowAttribute(windowId, WINDOW_BG);
ChangeBgX(bg, arg1 << 8, 0); ChangeBgX(bg, offset << 8, 0);
} }
} }
bool8 sub_8145850(struct CryRelatedStruct *arg0, u8 windowId) bool8 LoadCryMeter(struct CryScreenWindow *window, u8 windowId)
{ {
int retVal = FALSE; bool8 finished = FALSE;
switch (gDexCryScreenState) switch (gDexCryScreenState)
{ {
case 0: case 0:
if (!sCryVolumeMeter) if (!sCryMeterNeedle)
sCryVolumeMeter = AllocZeroed(sizeof(*sCryVolumeMeter)); sCryMeterNeedle = AllocZeroed(sizeof(*sCryMeterNeedle));
CopyToWindowPixelBuffer(windowId, gUnknown_085B8438, 0, 0); CopyToWindowPixelBuffer(windowId, sCryMeter_Gfx, 0, 0);
LoadPalette(gUnknown_085B8418, arg0->paletteNo * 16, 32); LoadPalette(sCryMeter_Pal, window->paletteNo * 16, 32);
gDexCryScreenState++; gDexCryScreenState++;
break; break;
case 1: case 1:
LoadSpriteSheets(gCryMeterNeedleSpriteSheets); LoadSpriteSheets(sCryMeterNeedleSpriteSheets);
LoadSpritePalettes(gCryMeterNeedleSpritePalettes); LoadSpritePalettes(sCryMeterNeedleSpritePalettes);
sCryVolumeMeter->needleSpriteId = CreateSprite(&gUnknown_085B8C68, 40 + arg0->xPos * 8, 56 + arg0->yPos * 8, 1); sCryMeterNeedle->spriteId = CreateSprite(&sCryMeterNeedleSpriteTemplate, 40 + window->xPos * 8, 56 + window->yPos * 8, 1);
sCryVolumeMeter->unk0 = 0x20; sCryMeterNeedle->rotation = MIN_NEEDLE_POS;
sCryVolumeMeter->unk1 = 0x20; sCryMeterNeedle->targetRotation = MIN_NEEDLE_POS;
sCryVolumeMeter->unk2 = 0; sCryMeterNeedle->moveIncrement = 0;
retVal = TRUE; finished = TRUE;
break; break;
} }
return retVal; return finished;
} }
void sub_8145914(void) void FreeCryScreen(void)
{ {
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[sCryVolumeMeter->needleSpriteId].oam.paletteNum)); FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[sCryMeterNeedle->spriteId].oam.paletteNum));
DestroySprite(gSprites + sCryVolumeMeter->needleSpriteId); DestroySprite(gSprites + sCryMeterNeedle->spriteId);
FREE_AND_SET_NULL(sDexCryScreen); FREE_AND_SET_NULL(sDexCryScreen);
FREE_AND_SET_NULL(sCryVolumeMeter); FREE_AND_SET_NULL(sCryMeterNeedle);
} }
static void sub_814596C(struct Sprite *sprite) static void SpriteCB_CryMeterNeedle(struct Sprite *sprite)
{ {
u16 i; u16 i;
s8 r3; s8 peakAmplitude;
s16 x; s16 x;
s16 y; s16 y;
struct ObjAffineSrcData affine; struct ObjAffineSrcData affine;
struct OamMatrix matrix; struct OamMatrix matrix;
u8 *var0; u8 amplitude;
gSprites[sCryVolumeMeter->needleSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL; gSprites[sCryMeterNeedle->spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
gSprites[sCryVolumeMeter->needleSpriteId].oam.affineParam = 0; gSprites[sCryMeterNeedle->spriteId].oam.affineParam = 0;
switch (sDexCryScreen->unk10)
// While no cry is playing, cryState is 0
// While cry is playing, cryState loops 1-8
switch (sDexCryScreen->cryState)
{ {
case 0: case 0:
sCryVolumeMeter->unk1 = 0x20; sCryMeterNeedle->targetRotation = MIN_NEEDLE_POS;
if (sCryVolumeMeter->unk0 > 0) if (sCryMeterNeedle->rotation > 0)
{ {
if (sCryVolumeMeter->unk2 != 1) if (sCryMeterNeedle->moveIncrement != 1)
sCryVolumeMeter->unk2--; sCryMeterNeedle->moveIncrement--;
} }
else else
sCryVolumeMeter->unk2 = 5; {
sCryMeterNeedle->moveIncrement = NEEDLE_MOVE_INCREMENT;
}
break; break;
case 2: case 2:
r3 = 0; peakAmplitude = 0;
for (i = 0; i < 16; i++) for (i = 0; i < ARRAY_COUNT(sDexCryScreen->cryWaveformBuffer); i++)
{ {
if (r3 < sDexCryScreen->unk0[i]) if (peakAmplitude < sDexCryScreen->cryWaveformBuffer[i])
r3 = sDexCryScreen->unk0[i]; peakAmplitude = sDexCryScreen->cryWaveformBuffer[i];
} }
sub_8145B24(r3 * 0xd0 / 0x100); SetCryMeterNeedleTarget(peakAmplitude * 208 / 256);
break; break;
case 6: case 6:
var0 = &sDexCryScreen->unk0[10]; // To introduce some randomness, needle jumps to set pos in waveform rather than peak
sub_8145B24(*var0 * 0xd0 / 0x100); amplitude = sDexCryScreen->cryWaveformBuffer[10];
SetCryMeterNeedleTarget(amplitude * 208 / 256);
break; break;
} }
if (sCryVolumeMeter->unk0 == sCryVolumeMeter->unk1) if (sCryMeterNeedle->rotation == sCryMeterNeedle->targetRotation)
{ {
// empty block // Empty, needle has reached target
} }
else if (sCryVolumeMeter->unk0 < sCryVolumeMeter->unk1) else if (sCryMeterNeedle->rotation < sCryMeterNeedle->targetRotation)
{ {
sCryVolumeMeter->unk0 += sCryVolumeMeter->unk2; // Rotate needle left
if (sCryVolumeMeter->unk0 > sCryVolumeMeter->unk1) sCryMeterNeedle->rotation += sCryMeterNeedle->moveIncrement;
if (sCryMeterNeedle->rotation > sCryMeterNeedle->targetRotation)
{ {
sCryVolumeMeter->unk0 = sCryVolumeMeter->unk1; sCryMeterNeedle->rotation = sCryMeterNeedle->targetRotation;
sCryVolumeMeter->unk1 = 0; sCryMeterNeedle->targetRotation = 0;
} }
} }
else else
{ {
sCryVolumeMeter->unk0 -= sCryVolumeMeter->unk2; // Rotate needle right
if (sCryVolumeMeter->unk0 < sCryVolumeMeter->unk1) sCryMeterNeedle->rotation -= sCryMeterNeedle->moveIncrement;
if (sCryMeterNeedle->rotation < sCryMeterNeedle->targetRotation)
{ {
sCryVolumeMeter->unk0 = sCryVolumeMeter->unk1; sCryMeterNeedle->rotation = sCryMeterNeedle->targetRotation;
sCryVolumeMeter->unk1 = 0; sCryMeterNeedle->targetRotation = 0;
} }
} }
affine.xScale = 0x100; affine.xScale = 256;
affine.yScale = 0x100; affine.yScale = 256;
affine.rotation = sCryVolumeMeter->unk0 * 256; affine.rotation = sCryMeterNeedle->rotation * 256;
ObjAffineSet(&affine, &matrix, 1, 2); ObjAffineSet(&affine, &matrix, 1, 2);
SetOamMatrix(0, matrix.a, matrix.b, matrix.c, matrix.d); SetOamMatrix(0, matrix.a, matrix.b, matrix.c, matrix.d);
x = gSineTable[((sCryVolumeMeter->unk0 + 0x7F) & 0xFF)]; x = gSineTable[((sCryMeterNeedle->rotation + 0x7F) & 0xFF)];
y = gSineTable[((sCryVolumeMeter->unk0 + 0x7F) & 0xFF) + 0x40]; y = gSineTable[((sCryMeterNeedle->rotation + 0x7F) & 0xFF) + 64];
sprite->pos2.x = x * 24 / 256; sprite->pos2.x = x * 24 / 256;
sprite->pos2.y = y * 24 / 256; sprite->pos2.y = y * 24 / 256;
} }
static void sub_8145B24(s8 a0) static void SetCryMeterNeedleTarget(s8 offset)
{ {
u16 r2 = (0x20 - a0) & 0xff; u16 rotation = (MIN_NEEDLE_POS - offset) & 0xFF;
if (r2 > 0x20 && r2 < 0xe0)
r2 = 0xe0;
sCryVolumeMeter->unk1 = r2; // Min is positive, max is negative. Make sure needle hasnt moved out of bounds
sCryVolumeMeter->unk2 = 5; if (rotation > MIN_NEEDLE_POS && rotation < (u8)MAX_NEEDLE_POS)
rotation = (u8)MAX_NEEDLE_POS;
sCryMeterNeedle->targetRotation = rotation;
sCryMeterNeedle->moveIncrement = NEEDLE_MOVE_INCREMENT;
} }
+1 -1
View File
@@ -603,7 +603,7 @@ static bool8 StartMenuPokedexCallback(void)
PlayRainStoppingSoundEffect(); PlayRainStoppingSoundEffect();
RemoveExtraStartMenuWindows(); RemoveExtraStartMenuWindows();
CleanupOverworldWindowsAndTilemaps(); CleanupOverworldWindowsAndTilemaps();
SetMainCallback2(CB2_Pokedex); SetMainCallback2(CB2_OpenPokedex);
return TRUE; return TRUE;
} }