mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-01-29 06:44:01 +01:00
Merge pull request #1000 from GriffinRichards/doc-dex
Document pokedex.c
This commit is contained in:
commit
39da49495d
@ -1,2 +1,2 @@
|
||||
gUnusedPokedexU8
|
||||
gUnknown_030060B4
|
||||
gPokedexVBlankCB
|
||||
|
BIN
graphics/pokedex/cry_screen_bg
Normal file
BIN
graphics/pokedex/cry_screen_bg
Normal file
Binary file not shown.
Before Width: | Height: | Size: 135 B After Width: | Height: | Size: 135 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@ -601,6 +601,9 @@
|
||||
#define NATIONAL_DEX_DRAGONITE 149
|
||||
#define NATIONAL_DEX_MEWTWO 150
|
||||
#define NATIONAL_DEX_MEW 151
|
||||
|
||||
#define KANTO_DEX_COUNT NATIONAL_DEX_MEW
|
||||
|
||||
#define NATIONAL_DEX_CHIKORITA 152
|
||||
#define NATIONAL_DEX_BAYLEEF 153
|
||||
#define NATIONAL_DEX_MEGANIUM 154
|
||||
@ -702,6 +705,146 @@
|
||||
#define NATIONAL_DEX_HO_OH 250
|
||||
#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_C 388
|
||||
#define NATIONAL_DEX_OLD_UNOWN_D 389
|
||||
@ -728,145 +871,214 @@
|
||||
#define NATIONAL_DEX_OLD_UNOWN_Y 410
|
||||
#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
|
||||
|
||||
#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_IVYSAUR 204
|
||||
#define HOENN_DEX_VENUSAUR 205
|
||||
@ -891,10 +1103,6 @@
|
||||
#define HOENN_DEX_FEAROW 224
|
||||
#define HOENN_DEX_EKANS 225
|
||||
#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_NIDORINA 228
|
||||
#define HOENN_DEX_NIDOQUEEN 229
|
||||
@ -903,15 +1111,6 @@
|
||||
#define HOENN_DEX_NIDOKING 232
|
||||
#define HOENN_DEX_CLEFAIRY 233
|
||||
#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_PARASECT 236
|
||||
#define HOENN_DEX_VENONAT 237
|
||||
@ -920,8 +1119,6 @@
|
||||
#define HOENN_DEX_DUGTRIO 240
|
||||
#define HOENN_DEX_MEOWTH 241
|
||||
#define HOENN_DEX_PERSIAN 242
|
||||
#define HOENN_DEX_PSYDUCK 158
|
||||
#define HOENN_DEX_GOLDUCK 159
|
||||
#define HOENN_DEX_MANKEY 243
|
||||
#define HOENN_DEX_PRIMEAPE 244
|
||||
#define HOENN_DEX_GROWLITHE 245
|
||||
@ -929,33 +1126,16 @@
|
||||
#define HOENN_DEX_POLIWAG 247
|
||||
#define HOENN_DEX_POLIWHIRL 248
|
||||
#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_WEEPINBELL 251
|
||||
#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_RAPIDASH 254
|
||||
#define HOENN_DEX_SLOWPOKE 255
|
||||
#define HOENN_DEX_SLOWBRO 256
|
||||
#define HOENN_DEX_MAGNEMITE 82
|
||||
#define HOENN_DEX_MAGNETON 83
|
||||
#define HOENN_DEX_FARFETCHD 257
|
||||
#define HOENN_DEX_DODUO 92
|
||||
#define HOENN_DEX_DODRIO 93
|
||||
#define HOENN_DEX_SEEL 258
|
||||
#define HOENN_DEX_DEWGONG 259
|
||||
#define HOENN_DEX_GRIMER 106
|
||||
#define HOENN_DEX_MUK 107
|
||||
#define HOENN_DEX_SHELLDER 260
|
||||
#define HOENN_DEX_CLOYSTER 261
|
||||
#define HOENN_DEX_GASTLY 262
|
||||
@ -966,8 +1146,6 @@
|
||||
#define HOENN_DEX_HYPNO 267
|
||||
#define HOENN_DEX_KRABBY 268
|
||||
#define HOENN_DEX_KINGLER 269
|
||||
#define HOENN_DEX_VOLTORB 84
|
||||
#define HOENN_DEX_ELECTRODE 85
|
||||
#define HOENN_DEX_EXEGGCUTE 270
|
||||
#define HOENN_DEX_EXEGGUTOR 271
|
||||
#define HOENN_DEX_CUBONE 272
|
||||
@ -975,28 +1153,15 @@
|
||||
#define HOENN_DEX_HITMONLEE 274
|
||||
#define HOENN_DEX_HITMONCHAN 275
|
||||
#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_TANGELA 278
|
||||
#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_SCYTHER 281
|
||||
#define HOENN_DEX_JYNX 282
|
||||
#define HOENN_DEX_ELECTABUZZ 283
|
||||
#define HOENN_DEX_MAGMAR 284
|
||||
#define HOENN_DEX_PINSIR 167
|
||||
#define HOENN_DEX_TAUROS 285
|
||||
#define HOENN_DEX_MAGIKARP 52
|
||||
#define HOENN_DEX_GYARADOS 53
|
||||
#define HOENN_DEX_LAPRAS 286
|
||||
#define HOENN_DEX_DITTO 287
|
||||
#define HOENN_DEX_EEVEE 288
|
||||
@ -1035,22 +1200,12 @@
|
||||
#define HOENN_DEX_LEDIAN 321
|
||||
#define HOENN_DEX_SPINARAK 322
|
||||
#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_IGGLYBUFF 137
|
||||
#define HOENN_DEX_TOGEPI 325
|
||||
#define HOENN_DEX_TOGETIC 326
|
||||
#define HOENN_DEX_NATU 162
|
||||
#define HOENN_DEX_XATU 163
|
||||
#define HOENN_DEX_MAREEP 327
|
||||
#define HOENN_DEX_FLAAFFY 328
|
||||
#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_POLITOED 331
|
||||
#define HOENN_DEX_HOPPIP 332
|
||||
@ -1068,8 +1223,6 @@
|
||||
#define HOENN_DEX_SLOWKING 344
|
||||
#define HOENN_DEX_MISDREAVUS 345
|
||||
#define HOENN_DEX_UNOWN 346
|
||||
#define HOENN_DEX_WOBBUFFET 161
|
||||
#define HOENN_DEX_GIRAFARIG 164
|
||||
#define HOENN_DEX_PINECO 347
|
||||
#define HOENN_DEX_FORRETRESS 348
|
||||
#define HOENN_DEX_DUNSPARCE 349
|
||||
@ -1080,25 +1233,17 @@
|
||||
#define HOENN_DEX_QWILFISH 354
|
||||
#define HOENN_DEX_SCIZOR 355
|
||||
#define HOENN_DEX_SHUCKLE 356
|
||||
#define HOENN_DEX_HERACROSS 168
|
||||
#define HOENN_DEX_SNEASEL 357
|
||||
#define HOENN_DEX_TEDDIURSA 358
|
||||
#define HOENN_DEX_URSARING 359
|
||||
#define HOENN_DEX_SLUGMA 103
|
||||
#define HOENN_DEX_MAGCARGO 104
|
||||
#define HOENN_DEX_SWINUB 360
|
||||
#define HOENN_DEX_PILOSWINE 361
|
||||
#define HOENN_DEX_CORSOLA 180
|
||||
#define HOENN_DEX_REMORAID 362
|
||||
#define HOENN_DEX_OCTILLERY 363
|
||||
#define HOENN_DEX_DELIBIRD 364
|
||||
#define HOENN_DEX_MANTINE 365
|
||||
#define HOENN_DEX_SKARMORY 115
|
||||
#define HOENN_DEX_HOUNDOUR 366
|
||||
#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_STANTLER 369
|
||||
#define HOENN_DEX_SMEARGLE 370
|
||||
@ -1145,140 +1290,4 @@
|
||||
#define HOENN_DEX_OLD_UNOWN_Y 410
|
||||
#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
|
||||
|
@ -3282,25 +3282,24 @@ extern const u32 gBattleTerrainPalette_StadiumDrake[];
|
||||
extern const u32 gBattleTerrainPalette_StadiumWallace[];
|
||||
|
||||
// pokedex
|
||||
extern const u32 gPokedexMenu2_Gfx[];
|
||||
extern const u16 gPokedexText_Pal[];
|
||||
extern const u32 gPokedexInterface_Gfx[];
|
||||
extern const u16 gPokedexBgHoenn_Pal[];
|
||||
extern const u32 gPokedexMenu_Gfx[];
|
||||
extern const u8 gPokedexTilemap_Main[];
|
||||
extern const u8 gPokedexTilemap_MainUnderlay[];
|
||||
extern const u8 gPokedexTilemap_StartMenu1[];
|
||||
extern const u8 gPokedexTilemap_StartMenu2[];
|
||||
extern const u16 gPokedexHoennBg_Pal[];
|
||||
extern const u16 gPokedexText_Pal[];
|
||||
extern const u16 gPokedexNationalBg_Pal[];
|
||||
extern const u8 gPokedexTilemap_DescriptionScreen[];
|
||||
extern const u8 gPokedexTilemap_CryScreen[];
|
||||
extern const u8 gPokedexTilemap_SizeScreen[];
|
||||
extern const u8 gPokedexTilemap_ScreenSelectBar1[];
|
||||
extern const u8 gPokedexTilemap_ScreenSelectBar2[];
|
||||
extern const u16 gPokedexCaughtScreenFade_Pal[];
|
||||
extern const u8 gPokedexList_Tilemap[];
|
||||
extern const u8 gPokedexListUnderlay_Tilemap[];
|
||||
extern const u8 gPokedexStartMenuMain_Tilemap[];
|
||||
extern const u8 gPokedexStartMenuSearchResults_Tilemap[];
|
||||
extern const u16 gPokedexSearchResults_Pal[];
|
||||
extern const u16 gPokedexBgNational_Pal[];
|
||||
extern const u8 gPokedexInfoScreen_Tilemap[];
|
||||
extern const u8 gPokedexCryScreen_Tilemap[];
|
||||
extern const u8 gPokedexSizeScreen_Tilemap[];
|
||||
extern const u8 gPokedexScreenSelectBarMain_Tilemap[];
|
||||
extern const u8 gPokedexScreenSelectBarSubmenu_Tilemap[];
|
||||
extern const u16 gPokedexCaughtScreen_Pal[];
|
||||
extern const u32 gPokedexSearchMenu_Gfx[];
|
||||
extern const u32 gPokedexSearch2_Tilemap[];
|
||||
extern const u32 gPokedexSearch1_Tilemap[];
|
||||
extern const u32 gPokedexSearchMenuHoenn_Tilemap[];
|
||||
extern const u32 gPokedexSearchMenuNational_Tilemap[];
|
||||
extern const u16 gPokedexSearchMenu_Pal[];
|
||||
|
||||
// berry tag screen
|
||||
|
@ -2,11 +2,7 @@
|
||||
#define GUARD_POKEDEX_H
|
||||
|
||||
extern u8 gUnusedPokedexU8;
|
||||
extern void (*gUnknown_030060B4)(void);
|
||||
|
||||
#define KANTO_DEX_COUNT 151
|
||||
#define HOENN_DEX_COUNT 202
|
||||
#define NATIONAL_DEX_COUNT 386
|
||||
extern void (*gPokedexVBlankCB)(void);
|
||||
|
||||
enum
|
||||
{
|
||||
@ -39,12 +35,12 @@ void ResetPokedex(void);
|
||||
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
|
||||
u16 GetNationalPokedexCount(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);
|
||||
u16 CreateMonSpriteFromNationalDexNumber(u16, s16, s16, u16);
|
||||
bool16 HasAllHoennMons(void);
|
||||
void ResetPokedexScrollPositions(void);
|
||||
bool16 HasAllMons(void);
|
||||
void CB2_Pokedex(void);
|
||||
void CB2_OpenPokedex(void);
|
||||
|
||||
#endif // GUARD_POKEDEX_H
|
||||
|
@ -1,10 +1,10 @@
|
||||
#ifndef GUARD_POKEDEX_CRY_SCREEN_H
|
||||
#define GUARD_POKEDEX_CRY_SCREEN_H
|
||||
|
||||
struct CryRelatedStruct
|
||||
struct CryScreenWindow
|
||||
{
|
||||
u16 unk0;
|
||||
u8 unk2;
|
||||
u16 unk0; // Assigned to val that's never read
|
||||
u8 unk2; // Never read
|
||||
u8 paletteNo;
|
||||
u8 xPos;
|
||||
u8 yPos;
|
||||
@ -12,10 +12,10 @@ struct CryRelatedStruct
|
||||
|
||||
extern u8 gDexCryScreenState;
|
||||
|
||||
bool8 sub_8145354(struct CryRelatedStruct*, u8);
|
||||
void sub_814545C(u8);
|
||||
void sub_8145534(u16);
|
||||
bool8 sub_8145850(struct CryRelatedStruct*, u8);
|
||||
void sub_8145914(void);
|
||||
bool8 LoadCryWaveformWindow(struct CryScreenWindow*, u8);
|
||||
void UpdateCryWaveformWindow(u8);
|
||||
void CryScreenPlayButton(u16);
|
||||
bool8 LoadCryMeter(struct CryScreenWindow*, u8);
|
||||
void FreeCryScreen(void);
|
||||
|
||||
#endif
|
||||
|
@ -10263,7 +10263,7 @@ static void Cmd_displaydexinfo(void)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
FreeAllWindowBuffers();
|
||||
gBattleCommunication[TASK_ID] = CreateDexDisplayMonDataTask(SpeciesToNationalPokedexNum(species),
|
||||
gBattleCommunication[TASK_ID] = DisplayCaughtMonDexPage(SpeciesToNationalPokedexNum(species),
|
||||
gBattleMons[gBattlerTarget].otId,
|
||||
gBattleMons[gBattlerTarget].personality);
|
||||
gBattleCommunication[0]++;
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "constants/vars.h"
|
||||
#include "event_data.h"
|
||||
#include "random.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
enum
|
||||
{
|
||||
|
@ -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 gFrontierPassMedalsGold_Pal[] = INCBIN_U16("graphics/frontier_pass/gold.gbapal");
|
||||
|
||||
const u16 gPokedexText_Pal[] = INCBIN_U16("graphics/pokedex/text.gbapal");
|
||||
|
||||
const u16 gPokedexCaughtScreenFade_Pal[] = INCBIN_U16("graphics/pokedex/fade.gbapal");
|
||||
|
||||
const u16 gPokedexHoennBg_Pal[] = INCBIN_U16("graphics/pokedex/hoenn_bg.gbapal");
|
||||
const u16 gPokedexNationalBg_Pal[] = INCBIN_U16("graphics/pokedex/national_bg.gbapal");
|
||||
|
||||
// Pokedex
|
||||
const u16 gPokedexBgHoenn_Pal[] = INCBIN_U16("graphics/pokedex/bg_hoenn.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 gPokedexBgNational_Pal[] = INCBIN_U16("graphics/pokedex/bg_national.gbapal");
|
||||
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 gPokedexTilemap_StartMenu1[] = INCBIN_U32("graphics/pokedex/tilemap1.bin.lz");
|
||||
const u32 gPokedexTilemap_StartMenu2[] = INCBIN_U32("graphics/pokedex/tilemap2.bin.lz");
|
||||
const u32 gPokedexTilemap_Main[] = INCBIN_U32("graphics/pokedex/tilemap3.bin.lz");
|
||||
const u32 gPokedexTilemap_MainUnderlay[] = INCBIN_U32("graphics/pokedex/tilemap4.bin.lz");
|
||||
const u32 gPokedexTilemap_SizeScreen[] = INCBIN_U32("graphics/pokedex/tilemap5.bin.lz");
|
||||
const u32 gPokedexTilemap_ScreenSelectBar1[] = INCBIN_U32("graphics/pokedex/tilemap6.bin.lz");
|
||||
const u32 gPokedexTilemap_ScreenSelectBar2[] = INCBIN_U32("graphics/pokedex/tilemap7.bin.lz");
|
||||
const u32 gPokedexTilemap_DescriptionScreen[] = INCBIN_U32("graphics/pokedex/tilemap8.bin.lz");
|
||||
const u32 gPokedexTilemap_CryScreen[] = INCBIN_U32("graphics/pokedex/tilemap9.bin.lz");
|
||||
|
||||
const u32 gPokedexStartMenuMain_Tilemap[] = INCBIN_U32("graphics/pokedex/start_menu_main.bin.lz");
|
||||
const u32 gPokedexStartMenuSearchResults_Tilemap[] = INCBIN_U32("graphics/pokedex/start_menu_search_results.bin.lz");
|
||||
const u32 gPokedexList_Tilemap[] = INCBIN_U32("graphics/pokedex/list.bin.lz");
|
||||
const u32 gPokedexListUnderlay_Tilemap[] = INCBIN_U32("graphics/pokedex/list_underlay.bin.lz");
|
||||
const u32 gPokedexSizeScreen_Tilemap[] = INCBIN_U32("graphics/pokedex/size_screen.bin.lz");
|
||||
const u32 gPokedexScreenSelectBarMain_Tilemap[] = INCBIN_U32("graphics/pokedex/screen_select_bar_main.bin.lz");
|
||||
const u32 gPokedexScreenSelectBarSubmenu_Tilemap[] = INCBIN_U32("graphics/pokedex/screen_select_bar_submenu.bin.lz");
|
||||
const u32 gPokedexInfoScreen_Tilemap[] = INCBIN_U32("graphics/pokedex/info_screen.bin.lz");
|
||||
const u32 gPokedexCryScreen_Tilemap[] = INCBIN_U32("graphics/pokedex/cry_screen.bin.lz");
|
||||
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 gPokedexSearch1_Tilemap[] = INCBIN_U32("graphics/pokedex/search1.bin.lz");
|
||||
const u32 gPokedexSearch2_Tilemap[] = INCBIN_U32("graphics/pokedex/search2.bin.lz");
|
||||
const u32 gPokedexSearchMenuNational_Tilemap[] = INCBIN_U32("graphics/pokedex/search_menu_national.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");
|
||||
|
||||
|
3478
src/pokedex.c
3478
src/pokedex.c
File diff suppressed because it is too large
Load Diff
@ -66,7 +66,7 @@ struct PokeDexAreaScreen
|
||||
/*0x6E0*/ u16 numAreaMarkerSprites;
|
||||
/*0x6E2*/ u16 unk6E2;
|
||||
/*0x6E4*/ u16 unk6E4;
|
||||
/*0x6E8*/ u8 *errno;
|
||||
/*0x6E8*/ u8 *screenSwitchState;
|
||||
/*0x6EC*/ struct RegionMap regionMap;
|
||||
/*0xF70*/ u8 charBuffer[0x40];
|
||||
/*0xFB0*/ struct Sprite * areaUnknownSprites[3];
|
||||
@ -83,11 +83,11 @@ static u16 GetRegionMapSectionId(u8, u8);
|
||||
static bool8 MapHasMon(const struct WildPokemonHeader *, u16);
|
||||
static bool8 MonListHasMon(const struct WildPokemonInfo *, u16, u16);
|
||||
static void DoAreaGlow(void);
|
||||
static void Task_PokedexAreaScreen_0(u8);
|
||||
static void Task_ShowPokedexAreaScreen(u8);
|
||||
static void CreateAreaMarkerSprites(void);
|
||||
static void LoadAreaUnknownGraphics(void);
|
||||
static void CreateAreaUnknownSprites(void);
|
||||
static void Task_PokedexAreaScreen_1(u8);
|
||||
static void Task_HandlePokedexAreaScreenInput(u8);
|
||||
static void sub_813D6B4(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;
|
||||
|
||||
sPokedexAreaScreen = AllocZeroed(sizeof(*sPokedexAreaScreen));
|
||||
sPokedexAreaScreen->species = species;
|
||||
sPokedexAreaScreen->errno = errno;
|
||||
errno[0] = 0;
|
||||
taskId = CreateTask(Task_PokedexAreaScreen_0, 0);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
sPokedexAreaScreen->screenSwitchState = screenSwitchState;
|
||||
screenSwitchState[0] = 0;
|
||||
taskId = CreateTask(Task_ShowPokedexAreaScreen, 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:
|
||||
ResetSpriteData();
|
||||
@ -702,21 +704,21 @@ static void Task_PokedexAreaScreen_0(u8 taskId)
|
||||
SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON);
|
||||
break;
|
||||
case 11:
|
||||
gTasks[taskId].func = Task_PokedexAreaScreen_1;
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].func = Task_HandlePokedexAreaScreenInput;
|
||||
gTasks[taskId].tState = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
|
||||
static void Task_PokedexAreaScreen_1(u8 taskId)
|
||||
static void Task_HandlePokedexAreaScreenInput(u8 taskId)
|
||||
{
|
||||
DoAreaGlow();
|
||||
switch (gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].tState)
|
||||
{
|
||||
default:
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].tState = 0;
|
||||
// fall through
|
||||
case 0:
|
||||
if (gPaletteFade.active)
|
||||
@ -737,13 +739,13 @@ static void Task_PokedexAreaScreen_1(u8 taskId)
|
||||
return;
|
||||
break;
|
||||
case 2:
|
||||
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB(0, 0, 0));
|
||||
BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 16, RGB_BLACK);
|
||||
break;
|
||||
case 3:
|
||||
if (gPaletteFade.active)
|
||||
return;
|
||||
DestroyAreaMarkerSprites();
|
||||
sPokedexAreaScreen->errno[0] = gTasks[taskId].data[1];
|
||||
sPokedexAreaScreen->screenSwitchState[0] = gTasks[taskId].data[1];
|
||||
sub_813D6B4();
|
||||
DestroyTask(taskId);
|
||||
FreePokedexAreaMapBgNum();
|
||||
@ -751,7 +753,7 @@ static void Task_PokedexAreaScreen_1(u8 taskId)
|
||||
return;
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
|
||||
static void sub_813D6B4(void)
|
||||
|
@ -9,35 +9,53 @@
|
||||
#include "trig.h"
|
||||
#include "window.h"
|
||||
|
||||
struct PokedexCryVolumeMeter {
|
||||
s8 unk0;
|
||||
s8 unk1;
|
||||
u8 unk2;
|
||||
u16 needleSpriteId;
|
||||
// Cry meter needle positions
|
||||
//
|
||||
// 0
|
||||
// 32 . . -32
|
||||
// . .
|
||||
// 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
|
||||
{
|
||||
u8 unk0[16];
|
||||
u8 unk10;
|
||||
u8 unk11;
|
||||
u8 unk12;
|
||||
u16 unk14;
|
||||
u8 unk16;
|
||||
u8 cryWaveformBuffer[16];
|
||||
u8 cryState;
|
||||
u8 playhead;
|
||||
u8 waveformPreviousY;
|
||||
u16 unk; // Never read
|
||||
u8 playStartPos;
|
||||
u16 species;
|
||||
u8 unk1A;
|
||||
u8 unk1B;
|
||||
u8 cryOverrideCountdown;
|
||||
u8 cryRepeatDelay;
|
||||
};
|
||||
|
||||
static void sub_8145588(u16);
|
||||
static void sub_81455A8(void);
|
||||
static void sub_814560C(void);
|
||||
static void sub_8145648(u8);
|
||||
static void sub_81456A8(u8, u8);
|
||||
static void sub_8145814(u8);
|
||||
static void sub_8145824(u8, s16, u8);
|
||||
static void sub_814596C(struct Sprite *);
|
||||
static void sub_8145B24(s8);
|
||||
static void PlayCryScreenCry(u16);
|
||||
static void BufferCryWaveformSegment(void);
|
||||
static void DrawWaveformFlatline(void);
|
||||
static void AdvancePlayhead(u8);
|
||||
static void DrawWaveformSegment(u8, u8);
|
||||
static void DrawWaveformWindow(u8);
|
||||
static void ShiftWaveformOver(u8, s16, bool8);
|
||||
static void SpriteCB_CryMeterNeedle(struct Sprite *);
|
||||
static void SetCryMeterNeedleTarget(s8);
|
||||
|
||||
// IWRAM common
|
||||
u8 gDexCryScreenState;
|
||||
@ -45,16 +63,16 @@ u8 gDexCryScreenState;
|
||||
// EWRAM vars
|
||||
static EWRAM_DATA struct PokedexCryScreen *sDexCryScreen = 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");
|
||||
const u8 CryMeterNeedleTiles[] = INCBIN_U8("graphics/pokedex/cry_meter_needle.4bpp");
|
||||
static const u16 sCryMeterNeedle_Pal[] = INCBIN_U16("graphics/pokedex/cry_meter_needle.gbapal");
|
||||
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");
|
||||
const u16 gUnknown_085B8418[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal");
|
||||
const u8 gUnknown_085B8438[] = INCBIN_U8("graphics/pokedex/cry_meter.4bpp.lz");
|
||||
static const u16 sCryMeter_Tilemap[] = INCBIN_U16("graphics/pokedex/cry_meter_map.bin"); // Unused
|
||||
static const u16 sCryMeter_Pal[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal");
|
||||
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,
|
||||
@ -139,33 +157,36 @@ const u16 gUnknown_085B8770[][72] =
|
||||
}
|
||||
};
|
||||
|
||||
const u16 gUnknown_085B8BF0[] = INCBIN_U16("graphics/pokedex/85B8C10.gbapal");
|
||||
const u8 gUnknown_085B8C10[] = INCBIN_U8("graphics/pokedex/85B8C10.4bpp");
|
||||
static const u16 sCryScreenBg_Pal[] = INCBIN_U16("graphics/pokedex/cry_screen_bg.gbapal");
|
||||
static const u8 sCryScreenBg_Gfx[] = INCBIN_U8("graphics/pokedex/cry_screen_bg.4bpp");
|
||||
|
||||
const u8 gUnknown_085B8C30[] = {0xF0, 0x0F};
|
||||
const u8 gUnknown_085B8C32[][16] =
|
||||
static const u8 sWaveformTileDataNybbleMasks[] = {0xF0, 0x0F};
|
||||
|
||||
// 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,
|
||||
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
|
||||
15, 14, 13, 12, 11, 10, 9, 8,
|
||||
8, 9, 10, 11, 12, 13, 14, 15,
|
||||
}, {
|
||||
0xF0, 0xE0, 0xD0, 0xC0, 0xB0, 0xA0, 0x90, 0x80,
|
||||
0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0
|
||||
15 << 4, 14 << 4, 13 << 4, 12 << 4, 11 << 4, 10 << 4, 9 << 4, 8 << 4,
|
||||
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_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,
|
||||
.affineMode = ST_OAM_AFFINE_NORMAL,
|
||||
@ -179,33 +200,33 @@ const struct OamData gOamData_85B8C60 =
|
||||
.paletteNum = 0,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gUnknown_085B8C68 =
|
||||
static const struct SpriteTemplate sCryMeterNeedleSpriteTemplate =
|
||||
{
|
||||
0x2000,
|
||||
0x2000,
|
||||
&gOamData_85B8C60,
|
||||
gSpriteAnimTable_85B8C5C,
|
||||
NULL,
|
||||
gDummySpriteAffineAnimTable,
|
||||
sub_814596C
|
||||
.tileTag = 0x2000,
|
||||
.paletteTag = 0x2000,
|
||||
.oam = &sOamData_CryMeterNeedle,
|
||||
.anims = sSpriteAnimTable_CryMeterNeedle,
|
||||
.images = NULL,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.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 retVal = FALSE;
|
||||
u8 finished = FALSE;
|
||||
|
||||
switch (gDexCryScreenState)
|
||||
{
|
||||
@ -216,112 +237,119 @@ bool8 sub_8145354(struct CryRelatedStruct *arg0, u8 windowId)
|
||||
sCryWaveformWindowTiledata = (u8*)GetWindowAttribute(windowId, WINDOW_TILE_DATA);
|
||||
}
|
||||
|
||||
sDexCryScreen->unk14 = arg0->unk0;
|
||||
sDexCryScreen->unk16 = arg0->yPos;
|
||||
sDexCryScreen->unk1A = 0;
|
||||
sDexCryScreen->unk1B = 0;
|
||||
sDexCryScreen->unk10 = 0;
|
||||
sDexCryScreen->unk12 = 28;
|
||||
sDexCryScreen->unk11 = 0;
|
||||
sub_8145824(windowId, -8 * arg0->xPos, 1);
|
||||
sDexCryScreen->unk = window->unk0;
|
||||
sDexCryScreen->playStartPos = window->yPos;
|
||||
sDexCryScreen->cryOverrideCountdown = 0;
|
||||
sDexCryScreen->cryRepeatDelay = 0;
|
||||
sDexCryScreen->cryState = 0;
|
||||
sDexCryScreen->waveformPreviousY = WAVEFORM_WINDOW_HEIGHT / 2;
|
||||
sDexCryScreen->playhead = 0;
|
||||
ShiftWaveformOver(windowId, -8 * window->xPos, TRUE); // Does nothing
|
||||
for (i = 0; i < 224; i++)
|
||||
CopyToWindowPixelBuffer(windowId, gUnknown_085B8C10, TILE_SIZE_4BPP, i);
|
||||
CopyToWindowPixelBuffer(windowId, sCryScreenBg_Gfx, TILE_SIZE_4BPP, i);
|
||||
|
||||
gDexCryScreenState++;
|
||||
break;
|
||||
case 1:
|
||||
for (i = 0; i < sDexCryScreen->unk16 * 8; i++)
|
||||
sub_81456A8(i, 0);
|
||||
for (i = 0; i < sDexCryScreen->playStartPos * 8; i++)
|
||||
DrawWaveformSegment(i, 0);
|
||||
|
||||
gDexCryScreenState++;
|
||||
break;
|
||||
case 2:
|
||||
sub_8145814(windowId);
|
||||
LoadPalette(gUnknown_085B8BF0, arg0->paletteNo * 16, 32);
|
||||
retVal = TRUE;
|
||||
DrawWaveformWindow(windowId);
|
||||
LoadPalette(sCryScreenBg_Pal, window->paletteNo * 16, 32);
|
||||
finished = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
return finished;
|
||||
}
|
||||
|
||||
void sub_814545C(u8 windowId)
|
||||
void UpdateCryWaveformWindow(u8 windowId)
|
||||
{
|
||||
u8 var0;
|
||||
u8 waveformIdx;
|
||||
|
||||
sub_8145814(windowId);
|
||||
sub_8145648(windowId);
|
||||
if (sDexCryScreen->unk1B)
|
||||
sDexCryScreen->unk1B--;
|
||||
DrawWaveformWindow(windowId);
|
||||
AdvancePlayhead(windowId);
|
||||
|
||||
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--;
|
||||
if (!sDexCryScreen->unk1A)
|
||||
sDexCryScreen->cryOverrideCountdown--;
|
||||
if (!sDexCryScreen->cryOverrideCountdown)
|
||||
{
|
||||
sub_8145588(sDexCryScreen->species);
|
||||
sub_814560C();
|
||||
PlayCryScreenCry(sDexCryScreen->species);
|
||||
DrawWaveformFlatline();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (sDexCryScreen->unk10 == 0)
|
||||
// No cry playing
|
||||
if (sDexCryScreen->cryState == 0)
|
||||
{
|
||||
sub_814560C();
|
||||
DrawWaveformFlatline();
|
||||
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())
|
||||
{
|
||||
sub_814560C();
|
||||
sDexCryScreen->unk10 = 0;
|
||||
DrawWaveformFlatline();
|
||||
sDexCryScreen->cryState = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
sub_81455A8();
|
||||
sDexCryScreen->unk10 = 1;
|
||||
BufferCryWaveformSegment();
|
||||
sDexCryScreen->cryState = 1;
|
||||
}
|
||||
|
||||
var0 = 2 * (sDexCryScreen->unk10 - 1);
|
||||
sub_81456A8(sDexCryScreen->unk16 * 8 + sDexCryScreen->unk11 - 2, sDexCryScreen->unk0[var0]);
|
||||
sub_81456A8(sDexCryScreen->unk16 * 8 + sDexCryScreen->unk11 - 1, sDexCryScreen->unk0[var0 + 1]);
|
||||
sDexCryScreen->unk10++;
|
||||
// Draw cry
|
||||
waveformIdx = 2 * (sDexCryScreen->cryState - 1);
|
||||
DrawWaveformSegment(sDexCryScreen->playStartPos * 8 + sDexCryScreen->playhead - 2, sDexCryScreen->cryWaveformBuffer[waveformIdx]);
|
||||
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)
|
||||
{
|
||||
StopCry();
|
||||
sDexCryScreen->species = species;
|
||||
sDexCryScreen->unk1A = 2;
|
||||
sDexCryScreen->cryOverrideCountdown = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_8145588(species);
|
||||
PlayCryScreenCry(species);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_8145588(u16 species)
|
||||
static void PlayCryScreenCry(u16 species)
|
||||
{
|
||||
PlayCry2(species, 0, 0x7d, 10);
|
||||
sDexCryScreen->unk10 = 1;
|
||||
PlayCry2(species, 0, 125, 10);
|
||||
sDexCryScreen->cryState = 1;
|
||||
}
|
||||
|
||||
static void sub_81455A8(void)
|
||||
static void BufferCryWaveformSegment(void)
|
||||
{
|
||||
u8 i;
|
||||
s8 *baseBuffer;
|
||||
@ -333,197 +361,218 @@ static void sub_81455A8(void)
|
||||
baseBuffer = gSoundInfo.pcmBuffer + (gSoundInfo.pcmDmaPeriod + 1 - gPcmDmaCounter) * gSoundInfo.pcmSamplesPerVBlank;
|
||||
|
||||
buffer = baseBuffer + 0x630;
|
||||
for (i = 0; i < 16; i++)
|
||||
sDexCryScreen->unk0[i] = buffer[i * 2] * 2;
|
||||
for (i = 0; i < ARRAY_COUNT(sDexCryScreen->cryWaveformBuffer); i++)
|
||||
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);
|
||||
sub_81456A8(sDexCryScreen->unk16 * 8 + sDexCryScreen->unk11 - 1, 0);
|
||||
DrawWaveformSegment(sDexCryScreen->playStartPos * 8 + sDexCryScreen->playhead - 2, 0);
|
||||
DrawWaveformSegment(sDexCryScreen->playStartPos * 8 + sDexCryScreen->playhead - 1, 0);
|
||||
}
|
||||
|
||||
static void sub_8145648(u8 windowId)
|
||||
static void AdvancePlayhead(u8 windowId)
|
||||
{
|
||||
u8 i;
|
||||
u16 offset;
|
||||
|
||||
sub_8145824(windowId, sDexCryScreen->unk11, 0);
|
||||
sDexCryScreen->unk11 += 2;
|
||||
offset = (sDexCryScreen->unk11 / 8 + sDexCryScreen->unk16 + 1) % 32;
|
||||
ShiftWaveformOver(windowId, sDexCryScreen->playhead, FALSE);
|
||||
sDexCryScreen->playhead += 2;
|
||||
offset = (sDexCryScreen->playhead / 8 + sDexCryScreen->playStartPos + 1) % 32;
|
||||
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;
|
||||
u8 r6;
|
||||
u8 r8;
|
||||
u16 offset;
|
||||
u16 r1;
|
||||
u8 i;
|
||||
// Position is a bitfield containing the play start pos, the playhead pos, and which vertical slice half to draw
|
||||
#define PLAY_START_POS (position >> 3)
|
||||
#define PLAYHEAD_POS (position & ((1 << 3) - 1))
|
||||
#define VERT_SLICE (position & 1)
|
||||
|
||||
r1 = (a1 + 127) * 256;
|
||||
i = r1 / 1152.0;
|
||||
if (i > 55)
|
||||
i = 55;
|
||||
sp0 = i;
|
||||
r6 = a0 & 1;
|
||||
if (i > sDexCryScreen->unk12)
|
||||
u8 currentPointY;
|
||||
u8 nybble;
|
||||
u16 offset;
|
||||
u16 temp;
|
||||
u8 y;
|
||||
|
||||
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
|
||||
{
|
||||
offset = gUnknown_085B8770[a0 & 0x7][i] + (a0 / 8) * TILE_SIZE_4BPP;
|
||||
sCryWaveformWindowTiledata[offset] &= gUnknown_085B8C30[r6];
|
||||
sCryWaveformWindowTiledata[offset] |= gUnknown_085B8C32[r6][((i / 3) - 1) & 0x0F];
|
||||
i--;
|
||||
} while (i > sDexCryScreen->unk12);
|
||||
offset = sWaveformOffsets[PLAYHEAD_POS][y] + PLAY_START_POS * TILE_SIZE_4BPP;
|
||||
sCryWaveformWindowTiledata[offset] &= sWaveformTileDataNybbleMasks[nybble];
|
||||
sCryWaveformWindowTiledata[offset] |= sWaveformColor[nybble][((y / 3) - 1) & 0x0F];
|
||||
y--;
|
||||
} while (y > sDexCryScreen->waveformPreviousY);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Current point higher than previous point, draw point and draw line down to previous
|
||||
do
|
||||
{
|
||||
offset = gUnknown_085B8770[a0 & 0x7][i] + (a0 / 8) * TILE_SIZE_4BPP;
|
||||
sCryWaveformWindowTiledata[offset] &= gUnknown_085B8C30[r6];
|
||||
sCryWaveformWindowTiledata[offset] |= gUnknown_085B8C32[r6][((i / 3) - 1) & 0x0F];
|
||||
i++;
|
||||
} while (i < sDexCryScreen->unk12);
|
||||
offset = sWaveformOffsets[PLAYHEAD_POS][y] + PLAY_START_POS * TILE_SIZE_4BPP;
|
||||
sCryWaveformWindowTiledata[offset] &= sWaveformTileDataNybbleMasks[nybble];
|
||||
sCryWaveformWindowTiledata[offset] |= sWaveformColor[nybble][((y / 3) - 1) & 0x0F];
|
||||
y++;
|
||||
} while (y < sDexCryScreen->waveformPreviousY);
|
||||
}
|
||||
|
||||
sDexCryScreen->unk12 = sp0;
|
||||
sDexCryScreen->waveformPreviousY = currentPointY;
|
||||
}
|
||||
|
||||
static void sub_8145814(u8 windowId)
|
||||
static void DrawWaveformWindow(u8 windowId)
|
||||
{
|
||||
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);
|
||||
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)
|
||||
{
|
||||
case 0:
|
||||
if (!sCryVolumeMeter)
|
||||
sCryVolumeMeter = AllocZeroed(sizeof(*sCryVolumeMeter));
|
||||
if (!sCryMeterNeedle)
|
||||
sCryMeterNeedle = AllocZeroed(sizeof(*sCryMeterNeedle));
|
||||
|
||||
CopyToWindowPixelBuffer(windowId, gUnknown_085B8438, 0, 0);
|
||||
LoadPalette(gUnknown_085B8418, arg0->paletteNo * 16, 32);
|
||||
CopyToWindowPixelBuffer(windowId, sCryMeter_Gfx, 0, 0);
|
||||
LoadPalette(sCryMeter_Pal, window->paletteNo * 16, 32);
|
||||
gDexCryScreenState++;
|
||||
break;
|
||||
case 1:
|
||||
LoadSpriteSheets(gCryMeterNeedleSpriteSheets);
|
||||
LoadSpritePalettes(gCryMeterNeedleSpritePalettes);
|
||||
sCryVolumeMeter->needleSpriteId = CreateSprite(&gUnknown_085B8C68, 40 + arg0->xPos * 8, 56 + arg0->yPos * 8, 1);
|
||||
sCryVolumeMeter->unk0 = 0x20;
|
||||
sCryVolumeMeter->unk1 = 0x20;
|
||||
sCryVolumeMeter->unk2 = 0;
|
||||
retVal = TRUE;
|
||||
LoadSpriteSheets(sCryMeterNeedleSpriteSheets);
|
||||
LoadSpritePalettes(sCryMeterNeedleSpritePalettes);
|
||||
sCryMeterNeedle->spriteId = CreateSprite(&sCryMeterNeedleSpriteTemplate, 40 + window->xPos * 8, 56 + window->yPos * 8, 1);
|
||||
sCryMeterNeedle->rotation = MIN_NEEDLE_POS;
|
||||
sCryMeterNeedle->targetRotation = MIN_NEEDLE_POS;
|
||||
sCryMeterNeedle->moveIncrement = 0;
|
||||
finished = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
return finished;
|
||||
}
|
||||
|
||||
void sub_8145914(void)
|
||||
void FreeCryScreen(void)
|
||||
{
|
||||
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[sCryVolumeMeter->needleSpriteId].oam.paletteNum));
|
||||
DestroySprite(gSprites + sCryVolumeMeter->needleSpriteId);
|
||||
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[sCryMeterNeedle->spriteId].oam.paletteNum));
|
||||
DestroySprite(gSprites + sCryMeterNeedle->spriteId);
|
||||
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;
|
||||
s8 r3;
|
||||
s8 peakAmplitude;
|
||||
s16 x;
|
||||
s16 y;
|
||||
struct ObjAffineSrcData affine;
|
||||
struct OamMatrix matrix;
|
||||
u8 *var0;
|
||||
u8 amplitude;
|
||||
|
||||
gSprites[sCryVolumeMeter->needleSpriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[sCryVolumeMeter->needleSpriteId].oam.affineParam = 0;
|
||||
switch (sDexCryScreen->unk10)
|
||||
gSprites[sCryMeterNeedle->spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
|
||||
gSprites[sCryMeterNeedle->spriteId].oam.affineParam = 0;
|
||||
|
||||
// While no cry is playing, cryState is 0
|
||||
// While cry is playing, cryState loops 1-8
|
||||
switch (sDexCryScreen->cryState)
|
||||
{
|
||||
case 0:
|
||||
sCryVolumeMeter->unk1 = 0x20;
|
||||
if (sCryVolumeMeter->unk0 > 0)
|
||||
sCryMeterNeedle->targetRotation = MIN_NEEDLE_POS;
|
||||
if (sCryMeterNeedle->rotation > 0)
|
||||
{
|
||||
if (sCryVolumeMeter->unk2 != 1)
|
||||
sCryVolumeMeter->unk2--;
|
||||
if (sCryMeterNeedle->moveIncrement != 1)
|
||||
sCryMeterNeedle->moveIncrement--;
|
||||
}
|
||||
else
|
||||
sCryVolumeMeter->unk2 = 5;
|
||||
{
|
||||
sCryMeterNeedle->moveIncrement = NEEDLE_MOVE_INCREMENT;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
r3 = 0;
|
||||
for (i = 0; i < 16; i++)
|
||||
peakAmplitude = 0;
|
||||
for (i = 0; i < ARRAY_COUNT(sDexCryScreen->cryWaveformBuffer); i++)
|
||||
{
|
||||
if (r3 < sDexCryScreen->unk0[i])
|
||||
r3 = sDexCryScreen->unk0[i];
|
||||
if (peakAmplitude < sDexCryScreen->cryWaveformBuffer[i])
|
||||
peakAmplitude = sDexCryScreen->cryWaveformBuffer[i];
|
||||
}
|
||||
sub_8145B24(r3 * 0xd0 / 0x100);
|
||||
SetCryMeterNeedleTarget(peakAmplitude * 208 / 256);
|
||||
break;
|
||||
case 6:
|
||||
var0 = &sDexCryScreen->unk0[10];
|
||||
sub_8145B24(*var0 * 0xd0 / 0x100);
|
||||
// To introduce some randomness, needle jumps to set pos in waveform rather than peak
|
||||
amplitude = sDexCryScreen->cryWaveformBuffer[10];
|
||||
SetCryMeterNeedleTarget(amplitude * 208 / 256);
|
||||
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;
|
||||
if (sCryVolumeMeter->unk0 > sCryVolumeMeter->unk1)
|
||||
// Rotate needle left
|
||||
sCryMeterNeedle->rotation += sCryMeterNeedle->moveIncrement;
|
||||
if (sCryMeterNeedle->rotation > sCryMeterNeedle->targetRotation)
|
||||
{
|
||||
sCryVolumeMeter->unk0 = sCryVolumeMeter->unk1;
|
||||
sCryVolumeMeter->unk1 = 0;
|
||||
sCryMeterNeedle->rotation = sCryMeterNeedle->targetRotation;
|
||||
sCryMeterNeedle->targetRotation = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sCryVolumeMeter->unk0 -= sCryVolumeMeter->unk2;
|
||||
if (sCryVolumeMeter->unk0 < sCryVolumeMeter->unk1)
|
||||
// Rotate needle right
|
||||
sCryMeterNeedle->rotation -= sCryMeterNeedle->moveIncrement;
|
||||
if (sCryMeterNeedle->rotation < sCryMeterNeedle->targetRotation)
|
||||
{
|
||||
sCryVolumeMeter->unk0 = sCryVolumeMeter->unk1;
|
||||
sCryVolumeMeter->unk1 = 0;
|
||||
sCryMeterNeedle->rotation = sCryMeterNeedle->targetRotation;
|
||||
sCryMeterNeedle->targetRotation = 0;
|
||||
}
|
||||
}
|
||||
|
||||
affine.xScale = 0x100;
|
||||
affine.yScale = 0x100;
|
||||
affine.rotation = sCryVolumeMeter->unk0 * 256;
|
||||
affine.xScale = 256;
|
||||
affine.yScale = 256;
|
||||
affine.rotation = sCryMeterNeedle->rotation * 256;
|
||||
ObjAffineSet(&affine, &matrix, 1, 2);
|
||||
SetOamMatrix(0, matrix.a, matrix.b, matrix.c, matrix.d);
|
||||
x = gSineTable[((sCryVolumeMeter->unk0 + 0x7F) & 0xFF)];
|
||||
y = gSineTable[((sCryVolumeMeter->unk0 + 0x7F) & 0xFF) + 0x40];
|
||||
x = gSineTable[((sCryMeterNeedle->rotation + 0x7F) & 0xFF)];
|
||||
y = gSineTable[((sCryMeterNeedle->rotation + 0x7F) & 0xFF) + 64];
|
||||
sprite->pos2.x = x * 24 / 256;
|
||||
sprite->pos2.y = y * 24 / 256;
|
||||
}
|
||||
|
||||
static void sub_8145B24(s8 a0)
|
||||
static void SetCryMeterNeedleTarget(s8 offset)
|
||||
{
|
||||
u16 r2 = (0x20 - a0) & 0xff;
|
||||
if (r2 > 0x20 && r2 < 0xe0)
|
||||
r2 = 0xe0;
|
||||
u16 rotation = (MIN_NEEDLE_POS - offset) & 0xFF;
|
||||
|
||||
sCryVolumeMeter->unk1 = r2;
|
||||
sCryVolumeMeter->unk2 = 5;
|
||||
// Min is positive, max is negative. Make sure needle hasnt moved out of bounds
|
||||
if (rotation > MIN_NEEDLE_POS && rotation < (u8)MAX_NEEDLE_POS)
|
||||
rotation = (u8)MAX_NEEDLE_POS;
|
||||
|
||||
sCryMeterNeedle->targetRotation = rotation;
|
||||
sCryMeterNeedle->moveIncrement = NEEDLE_MOVE_INCREMENT;
|
||||
}
|
||||
|
||||
|
@ -603,7 +603,7 @@ static bool8 StartMenuPokedexCallback(void)
|
||||
PlayRainStoppingSoundEffect();
|
||||
RemoveExtraStartMenuWindows();
|
||||
CleanupOverworldWindowsAndTilemaps();
|
||||
SetMainCallback2(CB2_Pokedex);
|
||||
SetMainCallback2(CB2_OpenPokedex);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user