Merge pull request #254 from Retnuhytnuob/pal_and_addressing
Some checks failed
CI / build (push) Has been cancelled

Pal and addressing
This commit is contained in:
Retnuhytnuob
2026-09-04 22:10:56 -05:00
committed by GitHub
54 changed files with 10533 additions and 10479 deletions

View File

@@ -814,7 +814,7 @@ gRayquazaBonusClear_Gfx:: @ 0x081408B4
@ The capture cutscene, streamed over the tile-704 overlay slot from three
@ places (main_board_center_capture_hole.c, main_board_to_be_split.c and
@ save_and_restore_game.c). t0..101 is the float-up fx drawn by
@ gPokemonFloatOamFramesets; t106..122 and t127..222 are the ball absorb fx,
@ gTotodileEggDeliveryCutsceneFramesets; t106..122 and t127..222 are the ball absorb fx,
@ the first frame reaching out for the ball and then the rest, drawn by
@ gMonCatchBallAbsorbPokemonFxSpriteSet. t102..105 and t123..126 are sub-slots
@ the ball graphic streams into, from gCaptureBallTilesGfx -- one per absorb
@@ -1447,7 +1447,7 @@ gPortraitAnim_Pals:: @ 0x081C02E4
@ Not a uniform frame bank: this is a packed atlas of variable-sized
@ sprites. The whole 0x2400 is uploaded to OBJ VRAM in one go, and
@ UpdateKickbackLogic then writes raw OAM entries straight out of
@ gCatchOverlayOamData (data/rom_2.s), so every animation frame picks its
@ gPikaKickbackFiringAnimOamFramesets (data/rom_2.s), so every animation frame picks its
@ own sizes and tile numbers. Those entries give 27 sprites packed back
@ to back with no alignment, in sizes from 8x8 to 32x32; the last 13
@ tiles are never referenced. pika_saver_coverage_shape.json describes
@@ -1548,7 +1548,7 @@ gCatchTile_BurstStage4_Pal:: @ 0x083A6E4C
.incbin "graphics/stage/main/catch_tile_burst_stage4.gbapal"
@ Egg mode, over the tile-704 overlay slot, with gAerodactlyFlight_Pal going to OBJ
@ bank 14 in the copy above. gEggFloatOamFramesets draws three frames, each a
@ bank 14 in the copy above. gAerodactylEggDeliveryCutsceneFramesets draws three frames, each a
@ 32x32 with a 16x8 under it and a 16x32 and 8x32 beside it. Only the first has
@ every piece on one sub-tile phase, so it takes a shape; the other two put one
@ piece a single pixel off and stay strips.

19743
data/rom_2.s

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,88 @@
#ifndef GUARD_CONSTANTS_PALETTE_MAPPINGS_H
#define GUARD_CONSTANTS_PALETTE_MAPPINGS_H
#define PAL_IX_0 0
#define PAL_IX_1 1
#define PAL_IX_2 2
#define PAL_IX_3 3
#define PAL_IX_4 4
#define PAL_IX_5 5
#define PAL_IX_6 6
#define PAL_IX_7 7
#define PAL_IX_8 8
#define PAL_IX_9 9
#define PAL_IX_10 10
#define PAL_IX_11 11
#define PAL_IX_12 12
#define PAL_IX_13 13
#define PAL_IX_14 14
#define PAL_IX_15 15
// Named OBJ Pals
#define PAL_IX_DIMMING_BASE_0 0 // single pal
#define PAL_IX_FLIPPERS 0
#define PAL_IX_HATCH_MACHINE_SPARKLE 0
#define PAL_IX_BALL 1
#define PAL_IX_CAPTURE_CUTSCENE_FX 1
#define PAL_IX_CENTER_GRAVITY_FX 1
#define PAL_IX_PORTRAIT_BORDER 1
#define PAL_IX_DIMMING_BASE_2 2 // of 7 pal on ruby, 6 pal on sapphire; (avoids shop sign)
#define PAL_IX_WAILMER 2
#define PAL_IX_RUBY_SHOP_SIGN 2
#define PAL_IX_CHIKORITA 3
#define PAL_IX_CHIKORITA_BLADE_FX 3
#define PAL_IX_CYNDAQUIL 3
#define PAL_IX_COINS 3
#define PAL_IX_CHARGE_SPINNER 3
#define PAL_IX_PIKA_KICKBACK 3 // Pichu, Pikachu, Kickback FX
#define PAL_IX_MAKUHITA_PUNCH_FX 3
#define PAL_IX_ZIGZAGOON_SPEECH_FX 3
#define PAL_IX_LINOONE 4
#define PAL_IX_NUZLEAF 4
#define PAL_IX_PELIPPER 4
#define PAL_IX_RUBY_MART_DOOR 5
#define PAL_IX_SHROOMISH 5
#define PAL_IX_SHARPEDO 6
#define PAL_IX_ZIGZAGOON 6
#define PAL_IX_GULPIN 7
#define PAL_IX_SEEDOT 7
#define PAL_IX_MAKUHITA 8
#define PAL_IX_SAPPHIRE_MART_SIGN 8
#define PAL_IX_CHARGE_INDICATOR 9
#define PAL_IX_PAUSE_TEXT 9
#define PAL_IX_RUBY_BUMPERS 9 // Chinchou, Lotad, Whiscash
#define PAL_IX_RAMP_PRIZE 10
#define PAL_IX_DIMMING_BASE_10 10 // of 3
#define PAL_IX_SAPPHIRE_SHOP_GUARD 10 // Plusle, Minun, Electric gate
#define PAL_IX_HATCH_EGG 11 // Also includes cave, and machine segment
#define PAL_IX_SPOINK 11
#define PAL_IX_TREECKO_1_UP 12
#define PAL_IX_ROULETTE_SLOT_A 12
#define PAL_IX_ROULETTE_SLOT_B 13
#define PAL_IX_CATCH_MON 13 // Also hatch mon, Jirachi, and Jirachi fx
#define PAL_IX_LOCATION_PORTRAIT 13
#define PAL_IX_MON_PORTRAIT 13
#define PAL_IX_INITIAL_LOCATION_SELECTION_FX 14
#define PAL_IX_BANNER 14
#define PAL_IX_TRAVEL_PAINTER 14
#define PAL_IX_RUBY_EGG_DELIVERER 14 // Aerodactyl, Totodile
#define PAL_IX_LATI_BALL_SAVER 14
#define PAL_IX_CATCH_TILE_FX 14 // Includes tiles, particles, and the lightning
#define PAL_IX_SHOP_UI 14 // Arrows, Coin banner, Coin, Cost, tile change sheen
#define PAL_IX_MON_SHADOW_PORTRAIT 15
#define PAL_IX_EVO_ITEM 15
// Named BG Pals
#define PAL_IX_HUD 12 // timer, score, lives, coins, mons, charge indicator
#define PAL_IX_SHOP_BG 12 // top banner, scrolling dots, backing behind displayed item
// Used with objPaletteSets
#define LIGHTING_PAL_IX_NORMAL 0
#define LIGHTING_PAL_IX_DIMMING 1
#define LIGHTING_PAL_IX_DIM 2
#define LIGHTING_BASE_2_SAPPHIRE_COUNT 6
#define LIGHTING_BASE_2_RUBY_COUNT 7
#define LIGHTING_BASE_10_COUNT 3
#endif //GUARD_CONSTANTS_PALETTE_MAPPINGS_H

View File

@@ -166,7 +166,7 @@ extern void ResetScoreTilemapPalette(u32, u32, s16);
extern s8 CheckAllPokemonCaught(void);
extern void FadeInFromWhite(void (*func)(void));
extern void FadeOutToWhite(void (*func)(void));
extern void FadeInWithCustomPalettes(u8 *, u8 *, void (*func)(void));
extern void FadeInWithCustomPalettes(u8 *, const Palette *, void (*func)(void));
extern void FadeOutToBlack(void (*func)(void));
extern void InterpolatePaletteStep(u16);
extern void DarkenPalette(const Palette *, u8 *, u16, u16); // Very much subject to change

View File

@@ -40,9 +40,9 @@
// "Character" Block: The container in VRAM holding a set of these tiles.
#define BG_CHAR_SIZE 0x4000
#define BG_SCREEN_SIZE 0x800 // Char block is 8 screens
#define BG_CHAR_ADDR(n) (BG_VRAM + (BG_CHAR_SIZE * (n)))
#define BG_SCREEN_ADDR(n) (BG_VRAM + (BG_SCREEN_SIZE * (n)))
#define BG_CHAR_SCREEN_ADDR(m,n) (BG_VRAM + (BG_CHAR_SIZE * (m))+ (BG_SCREEN_SIZE * (n)))
#define BG_CHAR_ADDR(n) (void*)(BG_VRAM + (BG_CHAR_SIZE * (n)))
#define BG_SCREEN_ADDR(n) (void*)(BG_VRAM + (BG_SCREEN_SIZE * (n)))
#define BG_CHAR_SCREEN_ADDR(m,n) (void*)(BG_VRAM + (BG_CHAR_SIZE * (m))+ (BG_SCREEN_SIZE * (n)))
#define BG_TILE_H_FLIP(n) (0x400 + (n))
#define BG_TILE_V_FLIP(n) (0x800 + (n))
@@ -76,15 +76,17 @@
#define PLTT_SLOT_SIZE 0x20
#define PALETTES_PER_BANK 16 // One bank for BG palettes, one for Obj palettes
#define COLORS_PER_PALETTE 16
#define BG_PLTT_SLOT(n) (BG_PLTT + (n) * PLTT_SLOT_SIZE)
#define OBJ_PLTT_SLOT(n) (OBJ_PLTT + (n) * PLTT_SLOT_SIZE)
#define BG_PLTT_SLOT(n) (void*)(BG_PLTT + (n) * PLTT_SLOT_SIZE)
#define OBJ_PLTT_SLOT(n) (void*)(OBJ_PLTT + (n) * PLTT_SLOT_SIZE)
#define TILES_SIZE_4BPP(n) ((n) * TILE_SIZE_4BPP)
#define TILES_SIZE_8BPP(n) ((n) * TILE_SIZE_8BPP)
#define BG_TILE_ADDR(n) (BG_VRAM + TILE_OFFSET_4BPP(n))
#define OBJ_TILE_ADDR(n) (OBJ_VRAM0 + TILE_OFFSET_4BPP(n))
#define BG_TILE_ADDR(n) (void*)(BG_VRAM + TILE_OFFSET_4BPP(n))
#define OBJ_TILE_ADDR(n) (void*)(OBJ_VRAM0 + TILE_OFFSET_4BPP(n))
#define TILE_WIDTH 8
#define TILE_HEIGHT 8

View File

@@ -64,8 +64,9 @@
#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) >= (b) ? (a) : (b))
// TODO: define RGB(r, g, b) macro
#define RGB_WHITE 0x7FFF
#define RGB5(r,g,b) (r | g << 5 | b << 10)
#define RGB_WHITE RGB5(31,31,31)
#define RGB_BLACK RGB5(0,0,0)
// Macros for checking the joypad
#define TEST_BUTTON(field, button) ((field) & (button))
@@ -207,7 +208,7 @@ struct PinballGame
/*0x06A*/ s16 hudSpriteBaseY;
/*0x06C*/ u16 timerBonus; //Additional time to be added to next timed event (Only for bonus fields or all timers?)
/*0x06E*/ s8 ballUpgradeFxTileIndex;
/*0x06F*/ s8 activePaletteIndex;
/*0x06F*/ s8 paletteDimmingIx; // 0= normal, 1=dimming, 2=dim. Used with banner/focus moments.
/*0x070*/ s8 paletteSwapActive;
/*0x071*/ s8 ballTrailEnabled;
/*0x072*/ s8 jirachiActivationFlags;
@@ -887,7 +888,7 @@ struct PinballGame
/*0x1114*/volatile u16 savedBlendBrightness;
/*0x1116*/u16 savedScoreOverlayActive;
/*0x1118*/u16 savedVCount;
/*0x111A*/u16 pauseObjPalette[OBJ_PLTT_SIZE / 0x20][0x10];
/*0x111A*/Palette pauseObjPalette[PALETTES_PER_BANK];
/*0x131A*/u8 filler131A[0x2];
/*0x131C*/u32 pauseAnimTimer; //Time since paused
/*0x1320*/s16 savedAnimationTimer;
@@ -935,7 +936,19 @@ struct FieldBoardLayout
/*0x26*/ s16 ballSpawnX;
/*0x28*/ s16 ballSpawnY;
/*0x2A*/ s16 ballDrainY;
/*0x2C*/ Palette *objPaletteSets[3];
/* 3 full sets of 16 palettes, referenced in smaller banks
Set 0 : Normal light
Set 1 : Dimming light
Set 2 : Dim Light
Bank 0 : single slot.
Bank 2 : 6 (Sapphire) or 7(Ruby) slots.
Bank 10 : 3 slots.
This avoids slot 1 (ball) and the sapphire shop sign (constantly changing palette)
*/
/*0x2C*/ Palette *objPaletteSets[3];
/*0x38*/ struct BoardCollisionDataSet collision;
};
@@ -977,8 +990,9 @@ extern struct PinballGame gIdleBoardGameState0;
extern struct PinballGame gIdleBoardGameState2;
extern struct PinballGame gIdleBoardGameState3;
extern struct PinballGame gIdleBoardGameState1;
extern s32 gBonusStageObjPal[64];
extern s32 gDusclopsAnimPalettes[];
extern const Palette gBonusStageObjPal[];
extern const Palette gDusclopsAnimPalettes[];
extern const u8 gGroudonLavaPaletteCycleData[];
extern u16 gKecleonUprightCollisionMap[0x1600];
extern u16 gKecleonKnockedDownCollisionMap[0x1600];
extern u16 gKyogreForm1CollisionMap[];

View File

@@ -0,0 +1,45 @@
#ifndef GUARD_INLINE_LOAD_LIGHTING_PAL_H
#define GUARD_INLINE_LOAD_LIGHTING_PAL_H
#include "global.h"
#include "main.h"
/* Loads board palettes for dimming, such as with a banner display
Dims slots 2-7, 10-12, and 8 on ruby board. (8 used for the shop sign on sapphire, which uses its own pal loading)
Slot 0 is also dimmed, but in different spots in code
Dimming levels are 0 (normal), 1 (dimming), and 2 (dim)*/
static inline void LoadObjLightingPalette(u16 dimmingIx)
{
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[dimmingIx][PAL_IX_DIMMING_BASE_2],
OBJ_PLTT_SLOT(PAL_IX_DIMMING_BASE_2),
LIGHTING_BASE_2_SAPPHIRE_COUNT * PLTT_SLOT_SIZE);
}
else
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[dimmingIx][PAL_IX_DIMMING_BASE_2],
OBJ_PLTT_SLOT(PAL_IX_DIMMING_BASE_2),
LIGHTING_BASE_2_RUBY_COUNT * PLTT_SLOT_SIZE);
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[dimmingIx][PAL_IX_DIMMING_BASE_10],
OBJ_PLTT_SLOT(PAL_IX_DIMMING_BASE_10),
LIGHTING_BASE_10_COUNT * PLTT_SLOT_SIZE);
gCurrentPinballGame->paletteDimmingIx = dimmingIx;
}
/* Loads board palettes for dimming, such as with a banner display
Handles Slot 0. (other slots dimmed with separate function, different blocks of code)
Dimming levels are 0 (normal), 1 (dimming), and 2 (dim)*/
static inline void LoadObjLightingPalette_0(u16 dimmingIx){
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[dimmingIx][PAL_IX_DIMMING_BASE_0],
OBJ_PLTT_SLOT(PAL_IX_DIMMING_BASE_0),
PLTT_SLOT_SIZE);
}
#endif

View File

@@ -6,6 +6,7 @@
#include "constants/high_scores.h"
#include "constants/pinball_inputs.h"
#include "constants/species.h"
#include "constants/palette_mappings.h"
#include "constants/sprite_groups.h"
#include "functions.h"

View File

@@ -3,6 +3,7 @@
#include "m4a.h"
#include "constants/bg_music.h"
#include "constants/board/main_board.h"
#include "inline_load_lighting_pal.h"
extern void RenderBannerSlideAnimation(void);
@@ -135,7 +136,7 @@ void RenderBannerSlideAnimation(void)
else
{
gCurrentPinballGame->activePortraitType = 4;
DmaCopy16(3, gModeBannerTilemaps[gCurrentPinballGame->bannerGfxIndex], (void *)OBJ_TILE_ADDR(TILE_INDEX(0, 22, 32)), 0x25E0);
DmaCopy16(3, gModeBannerTilemaps[gCurrentPinballGame->bannerGfxIndex], OBJ_TILE_ADDR(TILE_INDEX(0, 22, 32)), 0x25E0);
AnimateBannerSlide();
if (gCurrentPinballGame->bannerDisplayDuration > 0)
{
@@ -163,7 +164,7 @@ void RenderBannerSlideAnimation(void)
{
gCurrentPinballGame->activePortraitType = 4;
// i = framecount ???
DmaCopy16(3, gModeBannerTilemaps[gCurrentPinballGame->bannerGfxIndex] + ((i = frameCount) * 0x21C0), (void *)OBJ_TILE_ADDR(TILE_INDEX(0, 22, 32)), 0x21C0);
DmaCopy16(3, gModeBannerTilemaps[gCurrentPinballGame->bannerGfxIndex] + ((i = frameCount) * 0x21C0), OBJ_TILE_ADDR(TILE_INDEX(0, 22, 32)), 0x21C0);
if (gCurrentPinballGame->bannerDisplayDuration > 0)
{
gCurrentPinballGame->bannerDisplayDuration--;
@@ -196,18 +197,10 @@ void RenderBannerSlideAnimation(void)
else
{
gCurrentPinballGame->paletteSwapActive = TRUE;
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
LoadObjLightingPalette_0(LIGHTING_PAL_IX_DIM);
}
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
}
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 2;
LoadObjLightingPalette(LIGHTING_PAL_IX_DIM);
}
}
else if (gCurrentPinballGame->bannerSlideTimer > 0x24)
@@ -225,18 +218,9 @@ void RenderBannerSlideAnimation(void)
else
{
gCurrentPinballGame->paletteSwapActive = TRUE;
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
LoadObjLightingPalette_0(LIGHTING_PAL_IX_DIMMING);
}
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
}
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 1;
LoadObjLightingPalette(LIGHTING_PAL_IX_DIMMING);
}
}
}
@@ -266,17 +250,9 @@ void RenderBannerSlideAnimation(void)
gMain.blendBrightness = 4;
if (gCurrentPinballGame->bannerSlideTimer > 0x19)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
}
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 1;
LoadObjLightingPalette_0(LIGHTING_PAL_IX_DIMMING);
LoadObjLightingPalette(LIGHTING_PAL_IX_DIMMING);
gCurrentPinballGame->paletteSwapActive = TRUE;
}
if (gCurrentPinballGame->bannerSlideTimer == 0x1D)
@@ -295,17 +271,8 @@ void RenderBannerSlideAnimation(void)
|| gCurrentPinballGame->prizeId != PRIZE_START_EVO_MODE))
{
gMain.blendBrightness = 0;
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
}
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 0;
LoadObjLightingPalette_0(LIGHTING_PAL_IX_NORMAL);
LoadObjLightingPalette(LIGHTING_PAL_IX_NORMAL);
gCurrentPinballGame->paletteSwapActive = TRUE;
}
}

View File

@@ -117,7 +117,7 @@ void DebugMenu_RenderAndHandleInput(void)
for (i = 0x340; i < 0x380; i++)
gBG0TilemapBuffer[i] += 0xC100;
DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800);
DmaCopy16(3, gBG0TilemapBuffer, BG_CHAR_SCREEN_ADDR(0,4), BG_SCREEN_SIZE);
if (JOY_HELD(A_BUTTON))
ClearDebugTextDisplay();
}
@@ -209,11 +209,11 @@ void EndOfBallSequence(void)
DmaCopy16(3, gMainBoardEndOfBall_Gfx, (void *)0x6015800, 0x2800);
if (gMain.selectedField == FIELD_RUBY)
{
DmaCopy16(3, gEndOfBallBonus_Ruby_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gEndOfBallBonus_Ruby_Pal, OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gEndOfBallBonus_Sapphire_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gEndOfBallBonus_Sapphire_Pal, OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
}
m4aSongNumStart(SE_BONUS_PANEL_SLIDE);
@@ -458,12 +458,12 @@ void BallSaverAnimation(void)
DmaCopy16(3, gMainBoardBallSave_Gfx, (void *)0x06015800, 0x2400);
DmaCopy16(3, gMainBoardBallSaveLatios_Gfx, (void *)0x06016800, 0x800);
DmaCopy16(3, gMainBoardBallSaveLatiosArm_Gfx, (void *)0x06017000, 0xC0);
DmaCopy16(3, gBallSaver_Ruby_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gBallSaver_Ruby_Pal, OBJ_PLTT_SLOT(PAL_IX_LATI_BALL_SAVER), PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gMainBoardBallSave_Gfx, (void *)0x06015800, 0x2400);
DmaCopy16(3, gBallSaver_Sapphire_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gBallSaver_Sapphire_Pal, OBJ_PLTT_SLOT(PAL_IX_LATI_BALL_SAVER), PLTT_SLOT_SIZE);
}
gCurrentPinballGame->ballPhysicsState = BALL_PHYSICS_FROZEN;

View File

@@ -14,7 +14,7 @@ extern const u8 gPauseMenuText_Gfx[][0x20];
void PauseGame(void)
{
s16 i, j;
u16 objPalettes[OBJ_PLTT_SIZE / 0x20][0x10];
Palette objPalettes[PALETTES_PER_BANK];
u8 rgb[3];
gCurrentPinballGame->pauseMenuCursorIndex = 1;
@@ -46,20 +46,21 @@ void PauseGame(void)
gCurrentPinballGame->pauseScoreOverlayActive = gMain.scoreOverlayActive;
gCurrentPinballGame->pauseVCount = gMain.vCount;
DmaCopy16(3, OBJ_PLTT, gCurrentPinballGame->pauseObjPalette, OBJ_PLTT_SIZE);
for (i = 0; i < 16; i++)
for (i = 0; i < PALETTES_PER_BANK; i++)
{
for (j = 0; j < 16; j++)
for (j = 0; j < COLORS_PER_PALETTE; j++)
{
//Palette 9, color 12 is used for the white text in the pause screen
if (i != 9 || j != 12)
{
rgb[0] = (((gCurrentPinballGame->pauseObjPalette[i][j] & 0x001F) >> 0) * 2) / 5;
rgb[1] = (((gCurrentPinballGame->pauseObjPalette[i][j] & 0x03E0) >> 5) * 2) / 5;
rgb[2] = (((gCurrentPinballGame->pauseObjPalette[i][j] & 0x7C00) >> 10) * 2) / 5;
objPalettes[i][j] = rgb[0] | (rgb[1] << 5) | (rgb[2] << 10);
rgb[0] = (RGB5_GET_R(gCurrentPinballGame->pauseObjPalette[i][j]) * 2) / 5;
rgb[1] = (RGB5_GET_G(gCurrentPinballGame->pauseObjPalette[i][j]) * 2) / 5;
rgb[2] = (RGB5_GET_B(gCurrentPinballGame->pauseObjPalette[i][j]) * 2) / 5;
objPalettes[i][j] = RGB5(rgb[0],rgb[1],rgb[2]);
}
else
{
objPalettes[i][j] = 0x7FFF;
objPalettes[i][j] = RGB_WHITE;
}
}
}

View File

@@ -17,7 +17,7 @@ struct BoardProcessPair
extern struct BoardProcessPair CurrentBoardProcPairs_020028D8[9];
extern const struct BoardProcessPair BoardProcPairs_086B077C[];
extern const struct BoardProcessPair gBoardProcPairs_086B077C[];
extern const VoidFunc gFieldInitFuncs[];
extern struct SpriteGroup *gMainFieldSpriteGroups[][60];
extern struct SpriteGroup *gBonusFieldSpriteGroups[][30];
@@ -71,9 +71,13 @@ void PinballGame_State0_49ED4(void)
SetupDisplayRegistersForField();
InitPinballGameState();
loadFieldBoardGraphics();
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][0], OBJ_PLTT, OBJ_PLTT_SIZE);
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[LIGHTING_PAL_IX_NORMAL][PAL_IX_DIMMING_BASE_0],
OBJ_PLTT,
OBJ_PLTT_SIZE);
if (gMain.eReaderBonuses[EREADER_DX_MODE_CARD])
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
ConfigureBoardProcessesForField();
for (i = 0; i < 9; i++)
@@ -103,9 +107,13 @@ void PinballGame_State0_49ED4(void)
SetupDisplayRegistersForField();
InitPinballGameState();
loadFieldBoardGraphics();
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][0], OBJ_PLTT, OBJ_PLTT_SIZE);
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[LIGHTING_PAL_IX_NORMAL][PAL_IX_DIMMING_BASE_0],
OBJ_PLTT,
OBJ_PLTT_SIZE);
if (gMain.eReaderBonuses[EREADER_DX_MODE_CARD])
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
ConfigureBoardProcessesForField();
for (i = 0; i < 9; i++)
@@ -129,7 +137,10 @@ void PinballGame_State0_49ED4(void)
SetupDisplayRegistersForField();
InitPinballGameState();
loadFieldBoardGraphics();
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][0], OBJ_PLTT, OBJ_PLTT_SIZE);
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[LIGHTING_PAL_IX_NORMAL][PAL_IX_DIMMING_BASE_0],
OBJ_PLTT,
OBJ_PLTT_SIZE);
ConfigureBoardProcessesForField();
for (i = 0; i < 9; i++)
CurrentBoardProcPairs_020028D8[i].initFunc();
@@ -156,7 +167,7 @@ void PinballGame_State0_49ED4(void)
if (gMain.mainState != STATE_GAME_IDLE && gCurrentPinballGame->savedBgmSongHeader && gMPlayInfo_BGM.status < 0)
MPlayStart(&gMPlayInfo_BGM, gCurrentPinballGame->savedBgmSongHeader);
if (gMain.selectedField < MAIN_FIELD_COUNT)
RestoreBoardObjPalettes(gCurrentPinballGame->activePaletteIndex);
RestoreBoardObjPalettes(gCurrentPinballGame->paletteDimmingIx);
break;
case 1:
case 2:
@@ -395,81 +406,81 @@ void SetBallPositionForBonusReturn(void)
void ConfigureBoardProcessesForField(void)
{
CurrentBoardProcPairs_020028D8[1] = BoardProcPairs_086B077C[0];
CurrentBoardProcPairs_020028D8[8] = BoardProcPairs_086B077C[18];
CurrentBoardProcPairs_020028D8[6] = BoardProcPairs_086B077C[15];
CurrentBoardProcPairs_020028D8[1] = gBoardProcPairs_086B077C[0];
CurrentBoardProcPairs_020028D8[8] = gBoardProcPairs_086B077C[18];
CurrentBoardProcPairs_020028D8[6] = gBoardProcPairs_086B077C[15];
switch (gMain.selectedField)
{
case FIELD_RUBY:
CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[3];
CurrentBoardProcPairs_020028D8[7] = BoardProcPairs_086B077C[16];
CurrentBoardProcPairs_020028D8[0] = BoardProcPairs_086B077C[19];
CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[11];
CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[1];
CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[13];
CurrentBoardProcPairs_020028D8[3] = gBoardProcPairs_086B077C[3];
CurrentBoardProcPairs_020028D8[7] = gBoardProcPairs_086B077C[16];
CurrentBoardProcPairs_020028D8[0] = gBoardProcPairs_086B077C[19];
CurrentBoardProcPairs_020028D8[4] = gBoardProcPairs_086B077C[11];
CurrentBoardProcPairs_020028D8[2] = gBoardProcPairs_086B077C[1];
CurrentBoardProcPairs_020028D8[5] = gBoardProcPairs_086B077C[13];
gMain.fieldSpriteGroups = gMainFieldSpriteGroups[gMain.selectedField];
break;
case FIELD_SAPPHIRE:
CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[4];
CurrentBoardProcPairs_020028D8[7] = BoardProcPairs_086B077C[16];
CurrentBoardProcPairs_020028D8[0] = BoardProcPairs_086B077C[20];
CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[11];
CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[1];
CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[13];
CurrentBoardProcPairs_020028D8[3] = gBoardProcPairs_086B077C[4];
CurrentBoardProcPairs_020028D8[7] = gBoardProcPairs_086B077C[16];
CurrentBoardProcPairs_020028D8[0] = gBoardProcPairs_086B077C[20];
CurrentBoardProcPairs_020028D8[4] = gBoardProcPairs_086B077C[11];
CurrentBoardProcPairs_020028D8[2] = gBoardProcPairs_086B077C[1];
CurrentBoardProcPairs_020028D8[5] = gBoardProcPairs_086B077C[13];
gMain.fieldSpriteGroups = gMainFieldSpriteGroups[gMain.selectedField];
break;
case FIELD_DUSCLOPS:
CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[5];
CurrentBoardProcPairs_020028D8[7] = BoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = BoardProcPairs_086B077C[21];
CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14];
CurrentBoardProcPairs_020028D8[3] = gBoardProcPairs_086B077C[5];
CurrentBoardProcPairs_020028D8[7] = gBoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = gBoardProcPairs_086B077C[21];
CurrentBoardProcPairs_020028D8[4] = gBoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = gBoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = gBoardProcPairs_086B077C[14];
gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_BONUS_START];
break;
case FIELD_KECLEON:
CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[6];
CurrentBoardProcPairs_020028D8[7] = BoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = BoardProcPairs_086B077C[22];
CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14];
CurrentBoardProcPairs_020028D8[3] = gBoardProcPairs_086B077C[6];
CurrentBoardProcPairs_020028D8[7] = gBoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = gBoardProcPairs_086B077C[22];
CurrentBoardProcPairs_020028D8[4] = gBoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = gBoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = gBoardProcPairs_086B077C[14];
gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_BONUS_START];
break;
case FIELD_KYOGRE:
CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[7];
CurrentBoardProcPairs_020028D8[7] = BoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = BoardProcPairs_086B077C[23];
CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14];
CurrentBoardProcPairs_020028D8[3] = gBoardProcPairs_086B077C[7];
CurrentBoardProcPairs_020028D8[7] = gBoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = gBoardProcPairs_086B077C[23];
CurrentBoardProcPairs_020028D8[4] = gBoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = gBoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = gBoardProcPairs_086B077C[14];
gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_BONUS_START];
break;
case FIELD_GROUDON:
CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[8];
CurrentBoardProcPairs_020028D8[7] = BoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = BoardProcPairs_086B077C[24];
CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14];
CurrentBoardProcPairs_020028D8[3] = gBoardProcPairs_086B077C[8];
CurrentBoardProcPairs_020028D8[7] = gBoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = gBoardProcPairs_086B077C[24];
CurrentBoardProcPairs_020028D8[4] = gBoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = gBoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = gBoardProcPairs_086B077C[14];
gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_BONUS_START];
break;
case FIELD_RAYQUAZA:
CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[9];
CurrentBoardProcPairs_020028D8[7] = BoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = BoardProcPairs_086B077C[25];
CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14];
CurrentBoardProcPairs_020028D8[3] = gBoardProcPairs_086B077C[9];
CurrentBoardProcPairs_020028D8[7] = gBoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = gBoardProcPairs_086B077C[25];
CurrentBoardProcPairs_020028D8[4] = gBoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = gBoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = gBoardProcPairs_086B077C[14];
gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_BONUS_START];
break;
case FIELD_SPHEAL:
CurrentBoardProcPairs_020028D8[3] = BoardProcPairs_086B077C[10];
CurrentBoardProcPairs_020028D8[7] = BoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = BoardProcPairs_086B077C[26];
CurrentBoardProcPairs_020028D8[4] = BoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = BoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = BoardProcPairs_086B077C[14];
CurrentBoardProcPairs_020028D8[3] = gBoardProcPairs_086B077C[10];
CurrentBoardProcPairs_020028D8[7] = gBoardProcPairs_086B077C[17];
CurrentBoardProcPairs_020028D8[0] = gBoardProcPairs_086B077C[26];
CurrentBoardProcPairs_020028D8[4] = gBoardProcPairs_086B077C[12];
CurrentBoardProcPairs_020028D8[2] = gBoardProcPairs_086B077C[2];
CurrentBoardProcPairs_020028D8[5] = gBoardProcPairs_086B077C[14];
gMain.fieldSpriteGroups = gBonusFieldSpriteGroups[gMain.selectedField - FIELD_BONUS_START];
break;
}
@@ -509,7 +520,7 @@ void PinballGame_State1_4AAD8(void)
}
if (gMain.modeChangeFlags & MODE_CHANGE_PAUSE)
DmaCopy16(3, gCurrentPinballGame->pauseObjPalette, (void *)OBJ_PLTT, OBJ_PLTT_SIZE);
DmaCopy16(3, gCurrentPinballGame->pauseObjPalette, OBJ_PLTT, OBJ_PLTT_SIZE);
gCurrentPinballGame->fadeSubState = 2;
if (gMain.gameExitState == 2)

View File

@@ -61,9 +61,9 @@ void LoadPortraitGraphics(s16 displayMode, s16 picIx)
DmaCopy16(
3,
gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[picIx] / 15][gCurrentPinballGame->portraitGfxIndex[picIx] % 15],
OBJ_PLTT_SLOT(13),
OBJ_PLTT_SLOT(PAL_IX_CATCH_MON),
PLTT_SLOT_SIZE);
DmaCopy16(3, gMonPortraitGroupPals[0][15], OBJ_PLTT_SLOT(15), PLTT_SLOT_SIZE);
DmaCopy16(3, gMonPortraitGroupPals[0][15], OBJ_PLTT_SLOT(PAL_IX_MON_SHADOW_PORTRAIT), PLTT_SLOT_SIZE);
break;
case PORTRAIT_STATE_EVO_PREVIEW:
if (gCurrentPinballGame->evoChainPosition > 0)
@@ -74,13 +74,13 @@ void LoadPortraitGraphics(s16 displayMode, s16 picIx)
DmaCopy16(
3,
gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[picIx] / 15][gCurrentPinballGame->portraitGfxIndex[picIx] % 15],
OBJ_PLTT_SLOT(13),
OBJ_PLTT_SLOT(PAL_IX_CATCH_MON),
PLTT_SLOT_SIZE);
}
else if (gMain_saveData.pokedexFlags[gCurrentPinballGame->evoTargetSpecies] < SPECIES_CAUGHT)
{
gCurrentPinballGame->portraitGfxIndex[picIx] = gCurrentPinballGame->evoTargetSpecies;
DmaCopy16(3, gMonPortraitGroupPals[0][15], OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gMonPortraitGroupPals[0][15], OBJ_PLTT_SLOT(PAL_IX_CATCH_MON), PLTT_SLOT_SIZE);
}
else
{
@@ -88,7 +88,7 @@ void LoadPortraitGraphics(s16 displayMode, s16 picIx)
DmaCopy16(
3,
gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[picIx] / 15][gCurrentPinballGame->portraitGfxIndex[picIx] % 15],
OBJ_PLTT_SLOT(13),
OBJ_PLTT_SLOT(PAL_IX_CATCH_MON),
PLTT_SLOT_SIZE);
}
}
@@ -98,7 +98,7 @@ void LoadPortraitGraphics(s16 displayMode, s16 picIx)
DmaCopy16(
3,
gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[picIx] / 15][gCurrentPinballGame->portraitGfxIndex[picIx] % 15],
OBJ_PLTT_SLOT(13),
OBJ_PLTT_SLOT(PAL_IX_MON_PORTRAIT),
PLTT_SLOT_SIZE);
}
@@ -141,13 +141,13 @@ void LoadPortraitGraphics(s16 displayMode, s16 picIx)
))
{
DmaCopy16(3, &gPortraitAnim_Pals[index], tempPal, PLTT_SLOT_SIZE);
for (i = 0; i < 16; i++)
for (i = 0; i < COLORS_PER_PALETTE; i++)
{
rgb[0] = RGB5_GET_R(tempPal[i]) * 2 / 3;
rgb[1] = RGB5_GET_G(tempPal[i]) * 2 / 3;
rgb[2] = RGB5_GET_B(tempPal[i]) * 2 / 3;
tempPal[i] = RGB5_R(rgb[0]) | RGB5_G(rgb[1]) | RGB5_B(rgb[2]);
tempPal[i] = RGB5(rgb[0],rgb[1],rgb[2]);
}
DmaCopy16(3, tempPal, OBJ_PLTT_SLOT(gPortraitPaletteSlots[picIx]), PLTT_SLOT_SIZE);
@@ -244,7 +244,7 @@ void UpdatePortraitSpritePositions(void)
for (i = 0; i < 6; i++)
{
oamSimple = &group->oam[i];
gOamBuffer[oamSimple->oamId].paletteNum = 12;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_ROULETTE_SLOT_A;
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY;
}

View File

@@ -17,7 +17,7 @@ void ClearBG0Tilemap(void)
for (i = 0; i < 0x800; i++)
gBG0TilemapBuffer[i] = 0x1FF;
DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x1000);
DmaCopy16(3, gBG0TilemapBuffer, BG_CHAR_SCREEN_ADDR(0,4), 2* BG_SCREEN_SIZE);
}

View File

@@ -513,7 +513,7 @@ void ProcessBonusBoardBallDrain(void)
gCurrentPinballGame->ballUpgradeType--;
gCurrentPinballGame->ballUpgradeTimer = TICKS_FOR_TIME(1,0);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
}
gCurrentPinballGame->ball->positionQ1.x = gCurrentPinballGame->ball->positionQ0.x * 2;
@@ -569,7 +569,7 @@ void ResetBoardStateOnDeath(void)
{
gCurrentPinballGame->ballUpgradeType = BALL_UPGRADE_TYPE_MASTER_BALL;
gCurrentPinballGame->ballUpgradeTimer = TICKS_FOR_TIME(1,0);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
}
else
{
@@ -578,7 +578,7 @@ void ResetBoardStateOnDeath(void)
}
gCurrentPinballGame->ballUpgradeTimerPaused = FALSE;
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
gCurrentPinballGame->bonusMultiplier = gCurrentPinballGame->progressLevel;
gCurrentPinballGame->progressLevel = 1;
if (gCurrentPinballGame->whiscashFrameIx == WHISCASH_FRAME_GONE_AFTER_HIT)

View File

@@ -37,7 +37,7 @@ void MainBoardProcess_7B_12524(void)
gCurrentPinballGame->ballUpgradeTimer = TICKS_FOR_TIME(1,0);
}
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
}
}
@@ -344,7 +344,7 @@ void BonusBoardProcess_7B_12BF8()
gCurrentPinballGame->ballRespawnTimer++;
if (r5 >= 7 && r5 <= 10)
{
DmaCopy16(3, gBall_Pals[(s16) (gCurrentPinballGame->ballUpgradeType + 4)], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[(s16) (gCurrentPinballGame->ballUpgradeType + 4)], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
}
}
@@ -359,7 +359,7 @@ void BonusBoardProcess_7B_12BF8()
gCurrentPinballGame->ballRespawnState = BALL_SPAWN_STATE_LIVE_BALL;
spriteGroup->active = FALSE;
gCurrentPinballGame->ballPhysicsState = BALL_PHYSICS_NORMAL;
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
}
}
else
@@ -395,7 +395,7 @@ void BonusBoardProcess_7B_12BF8()
{
gCurrentPinballGame->ballRespawnState = BALL_SPAWN_STATE_LIVE_BALL;
spriteGroup->active = FALSE;
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
}
}
}
@@ -414,7 +414,7 @@ void BonusBoardProcess_7B_12BF8()
gCurrentPinballGame->ballUpgradeTimer = TICKS_FOR_TIME(1,0);
}
}
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
}
}
}

View File

@@ -218,11 +218,11 @@ void ProcessEventTimer(void)
{
if (gCurrentPinballGame->eventTimer & 0x8)
{
DmaCopy16(3, gTimer_Warning_Pal, BG_PLTT_SLOT(12), PLTT_SLOT_SIZE);
DmaCopy16(3, gTimer_Warning_Pal, BG_PLTT_SLOT(PAL_IX_HUD), PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(12), PLTT_SLOT_SIZE);
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(PAL_IX_HUD), PLTT_SLOT_SIZE);
}
if (gCurrentPinballGame->eventTimer == TIMER_TEXT_RED_UNDER_TIME)
@@ -232,11 +232,11 @@ void ProcessEventTimer(void)
{
if ((gCurrentPinballGame->eventTimer % 22) / 11)
{
DmaCopy16(3, gTimer_Slow_Pal, BG_PLTT_SLOT(12), PLTT_SLOT_SIZE);
DmaCopy16(3, gTimer_Slow_Pal, BG_PLTT_SLOT(PAL_IX_HUD), PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(12), PLTT_SLOT_SIZE);
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(PAL_IX_HUD), PLTT_SLOT_SIZE);
}
}
}

View File

@@ -17,7 +17,7 @@ extern const u8 gRubyBoardCompressedTiles2[];
extern const u8 gRubyBoardCompressedBGTileBuffer[];
extern const u8 gRubyBoardBGTiles[];
extern const u8 gRubyBoardBGTilemap[];
extern const u8 gSapphireBoardPalette[];
extern const Palette gSapphireBoardPalette[];
extern const u8 gSapphireBoardBG0Tilemap[];
extern const u8 gSapphireBoardBG1Tilemap[];
extern const u8 gSapphireBoardCompressedTiles1[];
@@ -25,7 +25,7 @@ extern const u8 gSapphireBoardBGTiles[];
extern const u8 gSapphireBoardCompressedTiles2[];
extern const u8 gSapphireBoardCompressedBGTileBuffer[];
extern const u8 gSapphireBoardBGTilemap[];
extern const u8 gDusclopsBoardPalette[];
extern const Palette gDusclopsBoardPalette[];
extern const u8 gDusclopsBoardBG0Tilemap[];
@@ -33,25 +33,24 @@ extern const u8 gDusclopsBoardBG1Tilemap[];
extern const u8 gDusclopsBoardBG2Tilemap[];
extern const u8 gBonusFieldCompressedBaseTiles[];
extern const u8 gDusclopsBoardCompressedBGTiles[];
extern const u8 gKecleonBoardPalette[];
extern const Palette gKecleonBoardPalette[];
extern const u8 gKecleonBoardBG1Tilemap[];
extern const u16 gKecleonBerryOverlayTilemap[];
extern const u8 gKecleonBoardBG0Tilemap[];
extern const u8 gKecleonBoardCompressedBGTiles[];
extern const u8 gKyogreBoardPalette[];
extern const Palette gKyogreBoardPalette[];
extern const u16 gKyogreWaterBackgroundTilemap[];
extern const u8 gKyogreBoardBG1Tilemap[];
extern const u8 gKyogreBoardCompressedBGTiles[];
extern const u8 gGroudonLavaPaletteCycleData[];
extern const u8 gGroudonBoardBG0Tilemap[];
extern const u8 gGroudonBoardBG1Tilemap[];
extern const u8 gGroudonBoardCompressedBGTiles[];
extern const u8 gRayquazaBoardPalette[];
extern const Palette gRayquazaBoardPalette[];
extern const u8 gRayquazaBoardBG0Tilemap[];
extern const u8 gRayquazaBoardBGScrollTilemap[];
extern const u8 gRayquazaBoardBG1Tilemap[];
extern const u8 gRayquazaBoardCompressedBGTiles[];
extern const u8 gSphealBoardPalette[];
extern const Palette gSphealBoardPalette[];
extern const u16 gSphealWaterBackgroundTilemap[];
extern const u8 gSphealBoardBG1Tilemap[];
extern const u8 gSphealBoardCompressedBGTiles[];
@@ -79,107 +78,107 @@ void loadFieldBoardGraphics(void)
{
case FIELD_RUBY:
DmaCopy16(3, gRubyBoard_Pals, BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gRubyBoardBGTiles, (void *)0x06008000, 0x8000);
DmaCopy16(3, gRubyBoardBGTilemap, (void *)0x06003000, 0x1000);
DmaCopy16(3, gRubyBoardBGTiles, BG_CHAR_SCREEN_ADDR(2,0), 2*BG_CHAR_SIZE);
DmaCopy16(3, gRubyBoardBGTilemap, BG_CHAR_SCREEN_ADDR(0,6), 2*BG_SCREEN_SIZE);
LZ77UnCompWram(gRubyBoardCompressedTiles1, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(1,0), BG_CHAR_SIZE);
LZ77UnCompWram(gRubyBoardCompressedTiles2, gBoardGfxBuffer);
LZ77UnCompWram(gRubyBoardCompressedBGTileBuffer, gBoardBGTileBufferAlt);
DmaCopy16(3, &gBoardGfxBuffer[0xC00], (void *)0x0600B400, 0x2400);
DmaCopy16(3, &gBoardGfxBuffer[0x3000], (void *)0x06008000, 0x3400);
DmaCopy16(3, gRubyBoardBG0Tilemap, (void *)BG_VRAM, 0x1000);
DmaCopy16(3, gRubyBoardBG1Tilemap, (void *)0x06001000, 0x1000);
DmaCopy16(3, &gBoardGfxBuffer[0x3000], BG_CHAR_SCREEN_ADDR(2,0), 0x3400);
DmaCopy16(3, gRubyBoardBG0Tilemap, BG_CHAR_SCREEN_ADDR(0,0), 2*BG_SCREEN_SIZE);
DmaCopy16(3, gRubyBoardBG1Tilemap, BG_CHAR_SCREEN_ADDR(0,2), 2*BG_SCREEN_SIZE);
DmaCopy16(3, gBoardHudTiles_A, (void *)0x06006800, 0x400);
DmaCopy16(3, gBoardHudTiles_B, (void *)0x06006C00, 0x800);
DmaCopy16(3, gRubyIntroSprites_Gfx, (void *)0x06010000, 0x8000);
break;
case FIELD_SAPPHIRE:
DmaCopy16(3, gSapphireBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gSapphireBoardBGTiles, (void *)0x06008000, 0x8000);
DmaCopy16(3, gSapphireBoardBGTilemap, (void *)0x06003000, 0x1000);
DmaCopy16(3, gSapphireBoardPalette, BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gSapphireBoardBGTiles, BG_CHAR_SCREEN_ADDR(2,0), 2*BG_CHAR_SIZE);
DmaCopy16(3, gSapphireBoardBGTilemap, BG_CHAR_SCREEN_ADDR(0,6), 2*BG_SCREEN_SIZE);
LZ77UnCompWram(gSapphireBoardCompressedTiles1, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(1,0), BG_CHAR_SIZE);
LZ77UnCompWram(gSapphireBoardCompressedTiles2, gBoardGfxBuffer);
LZ77UnCompWram(gSapphireBoardCompressedBGTileBuffer, gBoardBGTileBufferAlt);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x0600A800, 0x3000);
DmaCopy16(3, &gBoardGfxBuffer[0x3000], (void *)0x06008000, 0x2800);
DmaCopy16(3, gSapphireBoardBG0Tilemap, (void *)BG_VRAM, 0x1000);
DmaCopy16(3, gSapphireBoardBG1Tilemap, (void *)0x06001000, 0x1000);
DmaCopy16(3, &gBoardGfxBuffer[0x3000], BG_CHAR_SCREEN_ADDR(2,0), 0x2800);
DmaCopy16(3, gSapphireBoardBG0Tilemap, BG_CHAR_SCREEN_ADDR(0,0), 2*BG_SCREEN_SIZE);
DmaCopy16(3, gSapphireBoardBG1Tilemap, BG_CHAR_SCREEN_ADDR(0,2), 2*BG_SCREEN_SIZE);
DmaCopy16(3, gBoardHudTiles_A, (void *)0x06006800, 0x400);
DmaCopy16(3, gBoardHudTiles_B, (void *)0x06006C00, 0x800);
DmaCopy16(3, gSapphireIntroSprites_Gfx, (void *)0x06010000, 0x8000);
break;
case FIELD_DUSCLOPS:
DmaCopy16(3, gDusclopsBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gDusclopsBoardPalette, BG_PLTT, BG_PLTT_SIZE);
LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(1,0), BG_CHAR_SIZE);
LZ77UnCompWram(gDusclopsBoardCompressedBGTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000);
DmaCopy16(3, gDusclopsBoardBG0Tilemap, (void *)0x06000000, 0x800);
DmaCopy16(3, gDusclopsBoardBG1Tilemap, (void *)0x06000800, 0x800);
DmaCopy16(3, gDusclopsBoardBG2Tilemap, (void *)0x06001000, 0x800);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(2,0), 2*BG_CHAR_SIZE);
DmaCopy16(3, gDusclopsBoardBG0Tilemap, BG_CHAR_SCREEN_ADDR(0,0), BG_SCREEN_SIZE);
DmaCopy16(3, gDusclopsBoardBG1Tilemap, BG_CHAR_SCREEN_ADDR(0,1), BG_SCREEN_SIZE);
DmaCopy16(3, gDusclopsBoardBG2Tilemap, BG_CHAR_SCREEN_ADDR(0,2), BG_SCREEN_SIZE);
DmaCopy16(3, gBoardHudTiles_A, (void *)0x06006800, 0x400);
DmaCopy16(3, gBoardHudTiles_B, (void *)0x06006C00, 0x800);
DmaCopy16(3, gDusclopsIntroSprite_Gfx, (void *)0x06010000, 0x8000);
break;
case FIELD_KECLEON:
DmaCopy16(3, gKecleonBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gKecleonBoardPalette, BG_PLTT, BG_PLTT_SIZE);
LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(1,0), BG_CHAR_SIZE);
LZ77UnCompWram(gKecleonBoardCompressedBGTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000);
DmaCopy16(3, gKecleonBoardBG0Tilemap, (void *)0x06000000, 0x800);
DmaCopy16(3, gKecleonBoardBG1Tilemap, (void *)0x06000800, 0x800);
DmaCopy16(3, gKecleonBerryOverlayTilemap, (void *)0x06001000, 0x800);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(2,0), 2*BG_CHAR_SIZE);
DmaCopy16(3, gKecleonBoardBG0Tilemap, BG_CHAR_SCREEN_ADDR(0,0), BG_SCREEN_SIZE);
DmaCopy16(3, gKecleonBoardBG1Tilemap, BG_CHAR_SCREEN_ADDR(0,1), BG_SCREEN_SIZE);
DmaCopy16(3, gKecleonBerryOverlayTilemap, BG_CHAR_SCREEN_ADDR(0,2), BG_SCREEN_SIZE);
DmaCopy16(3, gBoardHudTiles_A, (void *)0x06006800, 0x400);
DmaCopy16(3, gBoardHudTiles_B, (void *)0x06006C00, 0x800);
DmaCopy16(3, gKecleonIntroSprite_Gfx, (void *)0x06010000, 0x8000);
break;
case FIELD_KYOGRE:
DmaCopy16(3, gKyogreBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gKyogreBoardPalette, BG_PLTT, BG_PLTT_SIZE);
LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(1,0), BG_CHAR_SIZE);
LZ77UnCompWram(gKyogreBoardCompressedBGTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000);
DmaCopy16(3, gKyogreWaterBackgroundTilemap, (void *)0x06000000, 0x800);
DmaCopy16(3, gKyogreBoardBG1Tilemap, (void *)0x06000800, 0x800);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(2,0), 2*BG_CHAR_SIZE);
DmaCopy16(3, gKyogreWaterBackgroundTilemap, BG_CHAR_SCREEN_ADDR(0,0), BG_SCREEN_SIZE);
DmaCopy16(3, gKyogreBoardBG1Tilemap, BG_CHAR_SCREEN_ADDR(0,1), BG_SCREEN_SIZE);
DmaCopy16(3, gBoardHudTiles_A, (void *)0x06006800, 0x400);
DmaCopy16(3, gBoardHudTiles_B, (void *)0x06006C00, 0x800);
DmaCopy16(3, gKyogreIntroSprite_Gfx, (void *)0x06010000, 0x8000);
break;
case FIELD_GROUDON:
DmaCopy16(3, gGroudonLavaPaletteCycleData, (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gGroudonLavaPaletteCycleData, BG_PLTT, BG_PLTT_SIZE);
LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(1,0), BG_CHAR_SIZE);
LZ77UnCompWram(gGroudonBoardCompressedBGTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000);
DmaCopy16(3, gGroudonBoardBG0Tilemap, (void *)0x06000000, 0x800);
DmaCopy16(3, gGroudonBoardBG1Tilemap, (void *)0x06000800, 0x800);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(2,0), 2*BG_CHAR_SIZE);
DmaCopy16(3, gGroudonBoardBG0Tilemap, BG_CHAR_SCREEN_ADDR(0,0), BG_SCREEN_SIZE);
DmaCopy16(3, gGroudonBoardBG1Tilemap, BG_CHAR_SCREEN_ADDR(0,1), BG_SCREEN_SIZE);
DmaCopy16(3, gBoardHudTiles_A, (void *)0x06006800, 0x400);
DmaCopy16(3, gBoardHudTiles_B, (void *)0x06006C00, 0x800);
DmaCopy16(3, gGroudonIntroSprite_Gfx, (void *)0x06010000, 0x8000);
break;
case FIELD_RAYQUAZA:
DmaCopy16(3, gRayquazaBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gRayquazaBoardPalette, BG_PLTT, BG_PLTT_SIZE);
LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(1,0), BG_CHAR_SIZE);
LZ77UnCompWram(gRayquazaBoardCompressedBGTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000);
DmaCopy16(3, gRayquazaBoardBG0Tilemap, (void *)0x06000000, 0x1000);
DmaCopy16(3, gRayquazaBoardBG1Tilemap, (void *)0x06001000, 0x1000);
DmaCopy16(3, gRayquazaBoardBGScrollTilemap, (void *)0x06003000, 0x1000);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(2,0), 2*BG_CHAR_SIZE);
DmaCopy16(3, gRayquazaBoardBG0Tilemap, BG_CHAR_SCREEN_ADDR(0,0), 2*BG_SCREEN_SIZE);
DmaCopy16(3, gRayquazaBoardBG1Tilemap, BG_CHAR_SCREEN_ADDR(0,2), 2*BG_SCREEN_SIZE);
DmaCopy16(3, gRayquazaBoardBGScrollTilemap, BG_CHAR_SCREEN_ADDR(0,6), 2*BG_SCREEN_SIZE);
DmaCopy16(3, gBoardHudTiles_A, (void *)0x06006800, 0x400);
DmaCopy16(3, gBoardHudTiles_B, (void *)0x06006C00, 0x800);
DmaCopy16(3, gRayquazaIntroSprite_Gfx, (void *)0x06010000, 0x8000);
break;
case FIELD_SPHEAL:
DmaCopy16(3, gSphealBoardPalette, (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gSphealBoardPalette, BG_PLTT, BG_PLTT_SIZE);
LZ77UnCompWram(gBonusFieldCompressedBaseTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06004000, 0x4000);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(1,0), BG_CHAR_SIZE);
LZ77UnCompWram(gSphealBoardCompressedBGTiles, gBoardGfxBuffer);
DmaCopy16(3, gBoardGfxBuffer, (void *)0x06008000, 0x8000);
DmaCopy16(3, gSphealWaterBackgroundTilemap, (void *)0x06000000, 0x800);
DmaCopy16(3, gSphealBoardBG1Tilemap, (void *)0x06000800, 0x800);
DmaCopy16(3, gBoardGfxBuffer, BG_CHAR_SCREEN_ADDR(2,0), 2*BG_CHAR_SIZE);
DmaCopy16(3, gSphealWaterBackgroundTilemap, BG_CHAR_SCREEN_ADDR(0,0), BG_SCREEN_SIZE);
DmaCopy16(3, gSphealBoardBG1Tilemap, BG_CHAR_SCREEN_ADDR(0,1), BG_SCREEN_SIZE);
DmaCopy16(3, gBoardHudTiles_A, (void *)0x06006800, 0x400);
DmaCopy16(3, gBoardHudTiles_B, (void *)0x06006C00, 0x800);
DmaCopy16(3, gSphealIntroSprites_Gfx, (void *)0x06010000, 0x8000);
@@ -210,22 +209,22 @@ void UpdateScrollingBackgroundTiles(void)
{
if (r3[0] > 31)
{
DmaCopy16(3, &gBoardBGTileBufferAlt[(r3[0] - 32) * 0x400], (void *)0x06008000 + r3[1] * 0x400, 0x400);
DmaCopy16(3, &gBoardBGTileBufferAlt[(r3[0] - 32) * 0x400], BG_CHAR_SCREEN_ADDR(2,0) + r3[1] * 0x400, 0x400);
}
else
{
DmaCopy16(3, &gBoardGfxBuffer[r3[0] * 0x400], (void *)0x06008000 + r3[1] * 0x400, 0x400);
DmaCopy16(3, &gBoardGfxBuffer[r3[0] * 0x400], BG_CHAR_SCREEN_ADDR(2,0) + r3[1] * 0x400, 0x400);
}
}
else
{
if (r3[2] > 31)
{
DmaCopy16(3, &gBoardBGTileBufferAlt[(r3[2] - 32) * 0x400], (void *)0x06008000 + r3[3] * 0x400, 0x400);
DmaCopy16(3, &gBoardBGTileBufferAlt[(r3[2] - 32) * 0x400], BG_CHAR_SCREEN_ADDR(2,0) + r3[3] * 0x400, 0x400);
}
else
{
DmaCopy16(3, &gBoardGfxBuffer[r3[2] * 0x400], (void *)0x06008000 + r3[3] * 0x400, 0x400);
DmaCopy16(3, &gBoardGfxBuffer[r3[2] * 0x400], BG_CHAR_SCREEN_ADDR(2,0) + r3[3] * 0x400, 0x400);
}
}

View File

@@ -109,7 +109,10 @@ void ProcessBonusBannerAndScoring(void)
break;
}
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][var0], OBJ_PLTT_SLOT(8), PLTT_SLOT_SIZE);
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[LIGHTING_PAL_IX_NORMAL][var0],
OBJ_PLTT_SLOT(PAL_IX_8),
PLTT_SLOT_SIZE);
if (group->active)
{

View File

@@ -30,7 +30,7 @@ EWRAM_DATA s16 gBonusFieldSelectTimer = 0;
EWRAM_DATA s16 gBonusFieldLoadingCounter = 0;
EWRAM_DATA s8 gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_CHOOSE_FIELD;
EWRAM_DATA s8 gBonusFieldSelectNextMainState = STATE_INTRO;
EWRAM_DATA u8 gBonusFieldHighlightPalette = 0;
EWRAM_DATA u8 gBonusFieldHighlightPalette = PAL_IX_0;
extern void (*const gBonusFieldSelectStateFuncs[])(void);
@@ -73,7 +73,7 @@ void LoadBonusFieldSelectGraphics(void)
DmaCopy16(3, gBonusFieldSelectBg0_Tilemap, BG_CHAR_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gBonusFieldSelectBg1_Tilemap, BG_CHAR_SCREEN_ADDR(0,1), BG_SCREEN_SIZE);
DmaCopy16(3, gBonusFieldSelectBg2_Tilemap, BG_CHAR_SCREEN_ADDR(0,2), BG_SCREEN_SIZE);
DmaCopy16(3, gFieldSelectSpritePals, OBJ_PLTT_SLOT(0), 3*PLTT_SLOT_SIZE);
DmaCopy16(3, gFieldSelectSpritePals, OBJ_PLTT_SLOT(PAL_IX_0), 3*PLTT_SLOT_SIZE);
DmaCopy16(3, gFieldSelectSpriteGfx, OBJ_VRAM0, 0x4020);
EnableVBlankInterrupts();
@@ -90,7 +90,7 @@ void InitBonusFieldSelectState(void)
gBonusFieldSelectState = BONUS_FIELD_SELECT_STATE_CHOOSE_FIELD;
gBonusFieldSelectTimer = 0;
gBonusFieldLoadingCounter = 0;
gBonusFieldHighlightPalette = 0;
gBonusFieldHighlightPalette = PAL_IX_0;
gBallSpeedDisplayToggle = 0;
gBallSpeedSubmenuVisible = FALSE;
gBonusFieldSelectNextMainState = STATE_INTRO;
@@ -182,7 +182,7 @@ void BonusFieldSelect_Menu(void)
if (gBonusFieldSelectTimer > 5)
{
gBonusFieldSelectTimer = 0;
gBonusFieldHighlightPalette = 2 - gBonusFieldHighlightPalette;
gBonusFieldHighlightPalette = PAL_IX_2 - gBonusFieldHighlightPalette;
gBonusFieldLoadingCounter++;
if (gBonusFieldLoadingCounter > 5)
{

View File

@@ -6,9 +6,9 @@ void FadeInFromWhite(void (*func)(void))
u16 i;
DmaCopy16(3, (void*)PLTT, gPaletteFadeBuffers[1], PLTT_SIZE);
DmaFill16(3, 0x7FFF, gPaletteFadeBuffers[0], PLTT_SIZE);
DmaFill16(3, RGB_WHITE, gPaletteFadeBuffers[0], PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[2], (void*)PLTT, PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[2], PLTT, PLTT_SIZE);
UnblankLCD();
@@ -20,11 +20,11 @@ void FadeInFromWhite(void (*func)(void))
MainLoopIter();
if (i == 31)
{
DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, 0x400);
DmaCopy16(3, gPaletteFadeBuffers[1], PLTT, PLTT_SIZE);
}
else
{
DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, 0x400);
DmaCopy16(3, gPaletteFadeBuffers[2], PLTT, PLTT_SIZE);
}
}
}
@@ -34,7 +34,7 @@ void FadeOutToWhite(void (*func)(void))
u16 i;
DmaCopy16(3, (void*)PLTT, gPaletteFadeBuffers[0], PLTT_SIZE);
DmaFill16(3, 0x7FFF, gPaletteFadeBuffers[1], PLTT_SIZE);
DmaFill16(3, RGB_WHITE, gPaletteFadeBuffers[1], PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE);
for (i = 0; i < 32; i++)
@@ -45,11 +45,11 @@ void FadeOutToWhite(void (*func)(void))
MainLoopIter();
if (i == 31)
{
DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, 0x400);
DmaCopy16(3, gPaletteFadeBuffers[1], PLTT, PLTT_SIZE);
}
else
{
DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, 0x400);
DmaCopy16(3, gPaletteFadeBuffers[2], PLTT, PLTT_SIZE);
}
}
ForceBlankLCD();
@@ -57,15 +57,15 @@ void FadeOutToWhite(void (*func)(void))
ClearGraphicsMemory();
}
void FadeInWithCustomPalettes(u8 * arg0, u8 * arg1, void (*func)(void))
void FadeInWithCustomPalettes(u8 * arg0, const Palette * arg1, void (*func)(void))
{
u16 i;
DmaCopy16(3, arg0, gPaletteFadeBuffers[1], 0x200);
DmaCopy16(3, arg1, gPaletteFadeBuffers[2], 0x200);
DmaFill16(3, 0, gPaletteFadeBuffers[0], PLTT_SIZE);
DmaCopy16(3, arg0, gPaletteFadeBuffers[1], 16*PLTT_SLOT_SIZE);
DmaCopy16(3, arg1, gPaletteFadeBuffers[2], 16*PLTT_SLOT_SIZE);
DmaFill16(3, RGB_BLACK, gPaletteFadeBuffers[0], PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[2], (void*)PLTT, PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[2], PLTT, PLTT_SIZE);
UnblankLCD();
gMain.dispcntBackup = REG_DISPCNT;
@@ -78,11 +78,11 @@ void FadeInWithCustomPalettes(u8 * arg0, u8 * arg1, void (*func)(void))
MainLoopIter();
if (i == 31)
{
DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, 0x400);
DmaCopy16(3, gPaletteFadeBuffers[1], PLTT, PLTT_SIZE);
}
else
{
DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, 0x400);
DmaCopy16(3, gPaletteFadeBuffers[2], PLTT, PLTT_SIZE);
}
}
}
@@ -92,7 +92,7 @@ void FadeOutToBlack(void (*func)(void))
u16 i;
DmaCopy16(3, (void*)PLTT, gPaletteFadeBuffers[0], PLTT_SIZE);
DmaFill16(3, 0, gPaletteFadeBuffers[1], PLTT_SIZE);
DmaFill16(3, RGB_BLACK, gPaletteFadeBuffers[1], PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE);
for (i = 0; i < 32; i++)
@@ -103,11 +103,11 @@ void FadeOutToBlack(void (*func)(void))
MainLoopIter();
if (i == 31)
{
DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, 0x400);
DmaCopy16(3, gPaletteFadeBuffers[1], PLTT, PLTT_SIZE);
}
else
{
DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, 0x400);
DmaCopy16(3, gPaletteFadeBuffers[2], PLTT, PLTT_SIZE);
}
}
MainLoopIter();
@@ -169,7 +169,7 @@ void DarkenPalette(const Palette * pal, u8 * dest, u16 arg2, u16 arg3)
u16 g[2];
u16 r[2];
DmaCopy16(3, pal, gPaletteFadeBuffers[0], arg2);
DmaFill16(3, 0, gPaletteFadeBuffers[1], arg2);
DmaFill16(3, RGB_BLACK, gPaletteFadeBuffers[1], arg2);
for(i = 0; i < arg2; i++)
{
@@ -208,7 +208,7 @@ void BrightenPalette(const Palette * pal, u8 * dest, u16 arg2, u16 arg3)
u16 g[2];
u16 r[2];
DmaCopy16(3, pal, gPaletteFadeBuffers[0], arg2);
DmaFill16(3, 0x7FFF, gPaletteFadeBuffers[1], arg2);
DmaFill16(3, RGB_WHITE, gPaletteFadeBuffers[1], arg2);
for(i = 0; i < arg2; i++)
{
@@ -365,7 +365,7 @@ void Unused_FadeInWithCustomPalettes(void *src1, void *src2, void (*func)(void))
DmaCopy16(3, src2, gPaletteFadeBuffers[2], BG_PLTT_SIZE);
DmaFill16(3, RGB_WHITE, gPaletteFadeBuffers, PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[2], PLTT, PLTT_SIZE);
UnblankLCD();
gMain.dispcntBackup = REG_DISPCNT;
@@ -379,11 +379,11 @@ void Unused_FadeInWithCustomPalettes(void *src1, void *src2, void (*func)(void))
MainLoopIter();
if (i == 0x20)
{
DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[1], PLTT, PLTT_SIZE);
}
else
{
DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[2], PLTT, PLTT_SIZE);
}
}
}
@@ -393,7 +393,7 @@ void Unused_FadeOutToWhite(void (*func)(void))
{
u16 i;
DmaCopy16(3, (void *)PLTT, gPaletteFadeBuffers[0], PLTT_SIZE);
DmaCopy16(3, PLTT, gPaletteFadeBuffers[0], PLTT_SIZE);
DmaFill16(3, RGB_WHITE, gPaletteFadeBuffers[1], PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[0], gPaletteFadeBuffers[2], PLTT_SIZE);
@@ -405,11 +405,11 @@ void Unused_FadeOutToWhite(void (*func)(void))
MainLoopIter();
if (i == 0x20)
{
DmaCopy16(3, gPaletteFadeBuffers[1], (void *)PLTT, PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[1], PLTT, PLTT_SIZE);
}
else
{
DmaCopy16(3, gPaletteFadeBuffers[2], (void *)PLTT, PLTT_SIZE);
DmaCopy16(3, gPaletteFadeBuffers[2], PLTT, PLTT_SIZE);
}
}
MainLoopIter();

View File

@@ -76,7 +76,7 @@ void DuskullBonus_Setup(void)
m4aSongNumStart(MUS_BONUS_FIELD_DUSKULL);
DmaCopy16(3, (void *)gBonusStageObjPal, OBJ_PLTT_SLOT(9), PLTT_SLOT_SIZE);
DmaCopy16(3, gBonusStageObjPal, OBJ_PLTT_SLOT(PAL_IX_9), PLTT_SLOT_SIZE);
}
void DusclopsBoardProcess_3B_33130(void)
@@ -89,7 +89,7 @@ void DusclopsBoardProcess_3B_33130(void)
if (gCurrentPinballGame->stageTimer < 120)
{
temp = gCurrentPinballGame->stageTimer / 24;
DmaCopy16(3, gDusclopsAnimPalettes + temp * 40, 0x05000000, 160);
DmaCopy16(3, gDusclopsAnimPalettes[temp * 5], BG_PLTT, 5*PLTT_SLOT_SIZE);
gCurrentPinballGame->cameraYAdjust = gCurrentPinballGame->stageTimer / 5 + 0xFFE8;
gCurrentPinballGame->stageTimer++;
@@ -1023,12 +1023,12 @@ void DusclopsPhase_ProcessEntityLogicAndGraphics(void)
if (tileOffset == DUSCLOPS_TILE_OFFSET_HIT)
{
if (gCurrentPinballGame->bossFrameTimer <= 5)
gOamBuffer[oamSimple->oamId].paletteNum = 4;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_4;
else
gOamBuffer[oamSimple->oamId].paletteNum = 3;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_3;
}
else
gOamBuffer[oamSimple->oamId].paletteNum = 3;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_3;
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + spriteGroup->baseX;
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + spriteGroup->baseY;

View File

@@ -75,12 +75,12 @@ void LoadEReaderGraphics(void)
gMain.bgOffsets[0].yOffset = (0xffe8 - 0x48);
gMain.dispcntBackup = REG_DISPCNT;
DmaCopy16(3, gEReaderBackground_Pals, BG_PLTT_SLOT(0), 2*PLTT_SLOT_SIZE);
DmaCopy16(3, gPokedexBackground_Pals[4], BG_PLTT_SLOT(2), PLTT_SLOT_SIZE);
DmaCopy16(3, gEReaderBackground_Pals, BG_PLTT_SLOT(PAL_IX_0), 2*PLTT_SLOT_SIZE);
DmaCopy16(3, gPokedexBackground_Pals[4], BG_PLTT_SLOT(PAL_IX_2), PLTT_SLOT_SIZE);
DmaCopy16(3, gEReaderBackground_Gfx, gTempGfxBuffer, 6*BG_SCREEN_SIZE);
DmaCopy16(3, gEReaderText_Tilemap, BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gEReaderOverlay_Tilemap, BG_SCREEN_ADDR(1), BG_SCREEN_SIZE);
DmaCopy16(3, gPokedexSprites_Pals, OBJ_PLTT_SLOT(0), 6*PLTT_SLOT_SIZE);
DmaCopy16(3, gPokedexSprites_Pals, OBJ_PLTT_SLOT(PAL_IX_0), 6*PLTT_SLOT_SIZE);
DmaCopy16(3, gPokedexSprites_Gfx, OBJ_VRAM0, 0x6C20);
InitEReaderTextState();
@@ -339,12 +339,12 @@ void Ereader_ShowSuccessPopup(void)
gMain.bgOffsets[0].yOffset = (0xffe8 - 0x48);
gMain.dispcntBackup = REG_DISPCNT;
DmaCopy16(3, gEReaderBackground_Pals, BG_PLTT_SLOT(0), 2*PLTT_SLOT_SIZE);
DmaCopy16(3, gPokedexBackground_Pals[4], BG_PLTT_SLOT(2), PLTT_SLOT_SIZE);
DmaCopy16(3, gEReaderBackground_Pals, BG_PLTT_SLOT(PAL_IX_0), 2*PLTT_SLOT_SIZE);
DmaCopy16(3, gPokedexBackground_Pals[4], BG_PLTT_SLOT(PAL_IX_2), PLTT_SLOT_SIZE);
DmaCopy16(3, gEReaderBackground_Gfx, gTempGfxBuffer, 6*BG_SCREEN_SIZE);
DmaCopy16(3, gEReaderText_Tilemap, BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gEReaderOverlay_Tilemap, BG_SCREEN_ADDR(1), BG_SCREEN_SIZE);
DmaCopy16(3, gPokedexSprites_Pals, OBJ_PLTT_SLOT(0), 6*PLTT_SLOT_SIZE);
DmaCopy16(3, gPokedexSprites_Pals, OBJ_PLTT_SLOT(PAL_IX_0), 6*PLTT_SLOT_SIZE);
DmaCopy16(3, gPokedexSprites_Gfx, OBJ_VRAM0, 0x6C20);
InitEReaderTextState();

View File

@@ -112,7 +112,7 @@ void PinballGameIdle1_19190(void)
if ((gMain.modeChangeFlags & MODE_CHANGE_PAUSE) != 0)
{
DmaCopy16(3, gCurrentPinballGame->pauseObjPalette, (void *)OBJ_PLTT, OBJ_PLTT_SIZE);
DmaCopy16(3, gCurrentPinballGame->pauseObjPalette, OBJ_PLTT, OBJ_PLTT_SIZE);
}
gCurrentPinballGame->fadeSubState = 2;

View File

@@ -25,10 +25,10 @@ static u8 CheckGameBoyPlayer(void)
lastDetectedFrame = 0;
prevDetectedFrame = 0;
VBlankIntrWait();
DmaCopy16(3, gGbPlayerGfx, (void *)BG_CHAR_ADDR(2), BG_CHAR_SIZE);
DmaCopy16(3, gGbPlayerPalettes, (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gGbPlayerGfx, BG_CHAR_ADDR(2), BG_CHAR_SIZE);
DmaCopy16(3, gGbPlayerPalettes, BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gGbPlayerTilemap, gGbPlayerTilemapBuffer, 0x500);
DmaCopy16(3, gGbPlayerTilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gGbPlayerTilemapBuffer, BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
REG_BG0CNT = BGCNT_256COLOR | BGCNT_CHARBASE(2);
for (i = 0; i <= 16; i++)
{
@@ -62,7 +62,7 @@ static u8 CheckGameBoyPlayer(void)
{
vu32 *dmaRegs = dma3;
dmaRegs[0] = (vu32)gGbPlayerTilemapBuffer;
dmaRegs[1] = BG_SCREEN_ADDR(0);
dmaRegs[1] = (vu32)BG_SCREEN_ADDR(0);
dmaRegs[2] = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_INC) << 16 | (BG_SCREEN_SIZE / sizeof(u32)));
dmaRegs[2];
}

View File

@@ -8,7 +8,6 @@
#define GROUDON_MODE_TIME TICKS_FOR_TIME(3,0)
extern const u8 gGroudonBonusClear_Gfx[];
extern const u8 gGroudonLavaPaletteCycleData[];
extern const u8 gGroudonAttackFx_Gfx[];
extern const s8 gGroudonBoardBoulders_Gfx[][0x300];
extern struct SongHeader se_groudon_hit;
@@ -133,7 +132,7 @@ void GroudonBoardProcess_3A_3B120(void)
DmaCopy16(3, gGroudonAttackFx_Gfx, (void *)0x06015800, 0x2000);
AnimateGroudonBackground();
m4aSongNumStart(MUS_BONUS_FIELD_GROUDON);
DmaCopy16(3, gBonusStageObjPal, OBJ_PLTT_SLOT(9), 0x20);
DmaCopy16(3, gBonusStageObjPal, OBJ_PLTT_SLOT(PAL_IX_9), PLTT_SLOT_SIZE);
}
void GroudonBoardProcess_3B_3B49C(void)
@@ -848,7 +847,7 @@ void RenderGroudonSprites(void)
if (gCurrentPinballGame->legendaryFlashState > 9)
{
palette = 11;
palette = PAL_IX_11;
for (i = 0; i < 19; i++)
{
oamSimple = &group->oam[i];
@@ -859,7 +858,7 @@ void RenderGroudonSprites(void)
}
else if (gCurrentPinballGame->legendaryFlashState == 1)
{
palette = 14;
palette = PAL_IX_14;
for (i = 0; i < 19; i++)
{
oamSimple = &group->oam[i];
@@ -876,7 +875,7 @@ void RenderGroudonSprites(void)
}
else if (gCurrentPinballGame->legendaryFlashState == 3)
{
palette = 11;
palette = PAL_IX_11;
for (i = 0; i < 19; i++)
{
oamSimple = &group->oam[i];
@@ -984,7 +983,7 @@ void UpdateGroudonFieldEntities(void)
for (j = 0; j < 6; j++)
{
oamSimple = &group->oam[j];
gOamBuffer[oamSimple->oamId].paletteNum = 13;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_MON_PORTRAIT;
gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->creatureOamPriority;
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY;
@@ -1532,7 +1531,7 @@ void UpdateGroudonFieldEntities(void)
gOamBuffer[oamSimple->oamId].x += group->baseX;
gOamBuffer[oamSimple->oamId].y += group->baseY;
gOamBuffer[oamSimple->oamId].paletteNum = 2;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_2;
}
}
else
@@ -1695,8 +1694,8 @@ void AnimateGroudonBackground(void)
struct OamDataSimple *oamSimple;
var0 = gGroudonLavaPaletteAnimIndices[(gMain.systemFrameCount % 144) / 24];
DmaCopy16(3, &gGroudonLavaPaletteCycleData[var0 * 0x20], (void *)0x05000000, 0x20);
DmaCopy16(3, &gGroudonLavaPaletteCycleData[(var0 + 4) * 0x20], (void *)0x05000080, 0x20);
DmaCopy16(3, &gGroudonLavaPaletteCycleData[var0 * PLTT_SLOT_SIZE], BG_PLTT_SLOT(PAL_IX_0), PLTT_SLOT_SIZE);
DmaCopy16(3, &gGroudonLavaPaletteCycleData[(var0 + 4) * PLTT_SLOT_SIZE], BG_PLTT_SLOT(PAL_IX_4), PLTT_SLOT_SIZE);
var0 = gGroudonBgTileAnimIndices[(gMain.systemFrameCount % 96) / 24];
for (i = 0; i < 4; i++)

View File

@@ -125,7 +125,7 @@ void LoadHighScoreGraphics(void)
DmaCopy16(3, gHighScoreBallWatermark_Gfx, BG_CHAR_ADDR(3), 0x2C00);
DmaCopy16(3, gHighScoreScoreTable_Tilemap, gBG0TilemapBuffer, 2*BG_SCREEN_SIZE);
DmaCopy16(3, gHighScoreBallWatermark_Tilemap, BG_SCREEN_ADDR(2), 2*BG_SCREEN_SIZE);
DmaCopy16(3, gHighScoreSprite_Pals, OBJ_PLTT_SLOT(0), 8*PLTT_SLOT_SIZE);
DmaCopy16(3, gHighScoreSprite_Pals, OBJ_PLTT_SLOT(PAL_IX_0), 8*PLTT_SLOT_SIZE);
DmaCopy16(3, gHighScoreDialogs_Gfx, (void *)OBJ_VRAM0, 0x4420);
InitHighScoreData();
DrawAllHighScoreText();
@@ -750,7 +750,7 @@ void IdleHighScore_LoadGraphics(void)
DmaCopy16(3, gHighScoreBallWatermark_Gfx, BG_CHAR_ADDR(3), 0x2C00);
DmaCopy16(3, gHighScoreScoreTable_Tilemap, gBG0TilemapBuffer, 2*BG_SCREEN_SIZE);
DmaCopy16(3, gHighScoreBallWatermark_Tilemap, BG_SCREEN_ADDR(2), 2*BG_SCREEN_SIZE);
DmaCopy16(3, gHighScoreSprite_Pals, OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
DmaCopy16(3, gHighScoreSprite_Pals, OBJ_PLTT_SLOT(PAL_IX_0), PLTT_SLOT_SIZE);
DmaCopy16(3, gHighScoreDialogs_Gfx, (void *)OBJ_VRAM0, 0x4420);
InitIdleHighScoreData();
DrawAllHighScoreText();
@@ -868,7 +868,7 @@ void HighScore_ReloadAfterLink(void)
DmaCopy16(3, gHighScoreBallWatermark_Gfx, BG_CHAR_ADDR(3), 0x2C00);
DmaCopy16(3, gHighScoreScoreTable_Tilemap, gBG0TilemapBuffer, 2*BG_SCREEN_SIZE);
DmaCopy16(3, gHighScoreBallWatermark_Tilemap, BG_SCREEN_ADDR(2), 2*BG_SCREEN_SIZE);
DmaCopy16(3, gHighScoreSprite_Pals, OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
DmaCopy16(3, gHighScoreSprite_Pals, OBJ_PLTT_SLOT(PAL_IX_0), PLTT_SLOT_SIZE);
DmaCopy16(3, gHighScoreDialogs_Gfx, (void *)OBJ_VRAM0, 0x4420);
InitIdleHighScoreData();
DrawAllHighScoreText();

View File

@@ -232,7 +232,7 @@ void IntroScene1_00_LoadTitleLettersAndTorchicScene(void)
DmaCopy16(3, gIntroScene1TorchicText_Gfx, BG_CHAR_ADDR(0), 0x5800);
DmaCopy16(3, gIntroScene1TorchicBall_Gfx, gIntroTileBuffer, 0x6800);
DarkenPalette(gIntroScene1TorchicSprites_Pals, (void*)BG_PLTT, BG_PLTT_SIZE, 0x20);
DarkenPalette(gIntroScene1TorchicSprites_Pals, (void*)BG_PLTT, BG_PLTT_SIZE, PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene1TorchicSprites_Gfx, BG_CHAR_ADDR(4), 0x8000);
DmaCopy16(3, gIntroScene1TorchicSprites_Pals, OBJ_PLTT, OBJ_PLTT_SIZE);
IntroScene1Torchic_InitVars();
@@ -245,9 +245,9 @@ void IntroScene1_00_LoadTitleLettersAndTorchicScene(void)
gMain.bgOffsets[3].xOffset = gIntroBGParams[2].posX;
gMain.bgOffsets[3].yOffset = gIntroBGParams[2].posY;
EnableVBlankInterrupts();
FadeInWithCustomPalettes((void*)BG_PLTT, (u8 * )gIntroScene1TorchicSprites_Pals, NULL);
FadeInWithCustomPalettes((void*)BG_PLTT, gIntroScene1TorchicSprites_Pals, NULL);
DmaCopy16(3, gIntroScene1TorchicSprites_Pals, OBJ_PLTT, OBJ_PLTT_SIZE);
DmaCopy16(3, 0, OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
DmaCopy16(3, 0, OBJ_PLTT_SLOT(PAL_IX_0), PLTT_SLOT_SIZE);
gIntroSceneIndex++;
}
@@ -359,7 +359,7 @@ void IntroScene1Torchic_04_LargeSparkle(void)
if (++gIntroSpriteEntities[0].frameTimer > 1)
{
gIntroSpriteEntities[0].visible = FALSE;
DarkenPalette(&gIntroScene1TorchicSprites_Pals[14], (void*)BG_PLTT_SLOT(7), 0x20, 0);
DarkenPalette(&gIntroScene1TorchicSprites_Pals[14], BG_PLTT_SLOT(PAL_IX_7), 0x20, 0);
m4aSongNumStart(MUS_OPENING);
gIntroSceneIndex++;
}
@@ -696,7 +696,7 @@ void IntroScene2Pikas_14_LoadPinkYellowBackground(void)
DmaCopy16(3, gIntroScene2Pikas_BG1Tiles, BG_CHAR_SCREEN_ADDR(3,2), 4*BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene2Pikas_BG3Tilemap, BG_CHAR_SCREEN_ADDR(3,6), BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene2PikasSprites_Gfx, BG_CHAR_SCREEN_ADDR(0,0), 7*BG_SCREEN_SIZE + 0x400);
DmaCopy16(3, gIntroScene2Pikas_Pal, BG_PLTT_SLOT(0), 4*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene2Pikas_Pal, BG_PLTT_SLOT(PAL_IX_0), 4*PLTT_SLOT_SIZE);
IntroScene2Pikas_InitVars();
gMain.bgOffsets[0].xOffset = gIntroBGParams[0].posX;
gMain.bgOffsets[0].yOffset = gIntroBGParams[0].posY;
@@ -819,9 +819,9 @@ void IntroScene3Treecko_20_LoadTreeckoFlipperBall(void)
DmaCopy16(3, gIntroScene3Treecko_BG1TilemapA, gBG0TilemapBuffer, BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene3Treecko_BG1TilemapB, gIntroScene3Treecko_AltBG1TilemapBuffer, BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene3TreeckoSprites_Gfx, BG_VRAM, 0x6C00);
DmaCopy16(3, gIntroScene3Treecko_Pal, BG_PLTT_SLOT(0), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene3Treecko_Pal, BG_PLTT_SLOT(PAL_IX_0), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene3TreeckoTreecko_Gfx, OBJ_VRAM0, 0x2000);
DmaCopy16(3, gIntroScene3Treecko_Pal, OBJ_PLTT_SLOT(0), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene3Treecko_Pal, OBJ_PLTT_SLOT(PAL_IX_0), 7*PLTT_SLOT_SIZE);
IntroScene3Treecko_InitVars();
IntroScene3Treecko_RenderPokeball();
@@ -901,9 +901,9 @@ void IntroScene3Treecko_22_FlipperHitTextScroll(void)
}
if (gIntroFrameCounter % 3 == 0)
{
DmaCopy16(3, BG_PLTT_SLOT(0), gIntroPalSwapBuffer, PLTT_SLOT_SIZE);
DmaCopy16(3, BG_PLTT_SLOT(2), PLTT, PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroPalSwapBuffer, BG_PLTT_SLOT(2), PLTT_SLOT_SIZE);
DmaCopy16(3, BG_PLTT_SLOT(PAL_IX_0), gIntroPalSwapBuffer, PLTT_SLOT_SIZE);
DmaCopy16(3, BG_PLTT_SLOT(PAL_IX_2), PLTT, PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroPalSwapBuffer, BG_PLTT_SLOT(PAL_IX_2), PLTT_SLOT_SIZE);
}
gMain.bgOffsets[0].xOffset = gIntroBGParams[0].posX;
@@ -999,7 +999,7 @@ void IntroScene4PlussleMinun_26_LoadTealWhiteBackground(void)
DmaCopy16(3, gIntroScene4PlussleMinun_BG1Tiles, BG_CHAR_SCREEN_ADDR(3,2), 4*BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene4PlussleMinun_BG3Tilemap, BG_CHAR_SCREEN_ADDR(3,6), BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene4PlussleMinunSprites_Gfx, BG_CHAR_ADDR(0), BG_CHAR_SIZE);
DmaCopy16(3, gIntroScene4PlussleMinun_Pal, BG_PLTT_SLOT(0), 3*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene4PlussleMinun_Pal, BG_PLTT_SLOT(PAL_IX_0), 3*PLTT_SLOT_SIZE);
gMain.dispcntBackup = REG_DISPCNT;
IntroScene4PlussleMinun_InitVars();
@@ -1121,9 +1121,9 @@ void IntroScene5Mudkip_32_LoadMudkipBallScene(void)
DmaCopy16(3, gIntroScene5Mudkip_BG3Tilemap, BG_CHAR_SCREEN_ADDR(3,6), BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene5MudkipText_Gfx, BG_CHAR_ADDR(0), 5*BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene1TorchicBall_Gfx, gTempGfxBuffer, BG_CHAR_SIZE);
DmaCopy16(3, gIntroScene5Mudkip_Pal, BG_PLTT_SLOT(0), 12*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene5Mudkip_Pal, BG_PLTT_SLOT(PAL_IX_0), 12*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene5MudkipSprites_Gfx, OBJ_VRAM0, 6*BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene5Mudkip_Pal, OBJ_PLTT_SLOT(0), 12*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene5Mudkip_Pal, OBJ_PLTT_SLOT(PAL_IX_0), 12*PLTT_SLOT_SIZE);
IntroScene5Mudkip_InitVars();
IntroScene5Mudkip_RenderAllSprites();
@@ -1352,9 +1352,9 @@ void IntroScene6Chinchou_38_LoadChinchou(void)
DmaCopy16(3, gIntroScene6Chinchou_BG2Tilemap, BG_CHAR_SCREEN_ADDR(3,6), BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene6Chinchou_BG3Tilemap, BG_CHAR_SCREEN_ADDR(3,7), BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene6ChinchouSprites_Gfx, BG_VRAM, 0x6400);
DmaCopy16(3, gIntroScene6Chinchou_Pal, BG_PLTT_SLOT(0), 4*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene6Chinchou_Pal, BG_PLTT_SLOT(PAL_IX_0), 4*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene6ChinchouStars_Gfx, OBJ_VRAM0, 0x1000);
DmaCopy16(3, gIntroScene6Chinchou_Pal, OBJ_PLTT_SLOT(0), 4*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene6Chinchou_Pal, OBJ_PLTT_SLOT(PAL_IX_0), 4*PLTT_SLOT_SIZE);
IntroScene6Chinchou_InitVars();
@@ -1583,9 +1583,9 @@ void IntroScene7Parade_43_LoadPinkYellowBackground(void)
DmaCopy16(3, gIntroScene7Parade_BG2Tiles, BG_CHAR_SCREEN_ADDR(3,4), 4*BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene7Parade_BG3Tilemap, BG_CHAR_SCREEN_ADDR(1,7), BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene7ParadeSprites_Gfx, BG_VRAM, 0x5000);
DmaCopy16(3, gIntroScene7Parade_Pal, BG_PLTT_SLOT(0), 11*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene7Parade_Pal, BG_PLTT_SLOT(PAL_IX_0), 11*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene7ParadeWailmer_Gfx, OBJ_VRAM0, 0x2000);
DmaCopy16(3, gIntroScene7Parade_Pal, OBJ_PLTT_SLOT(0), 11*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene7Parade_Pal, OBJ_PLTT_SLOT(PAL_IX_0), 11*PLTT_SLOT_SIZE);
gMain.dispcntBackup = REG_DISPCNT;
IntroScene7Parade_InitVars();
@@ -1853,9 +1853,9 @@ void IntroScene8WailmerLaunch_51_LoadWailmerBlastBackground(void)
DmaCopy16(3, gIntroScene8WailmerLaunch_BG2Tilemap, BG_VRAM, BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene8WailmerLaunchExplosion_Gfx, BG_CHAR_SCREEN_ADDR(1,0), 0x3400);
DmaCopy16(3, gIntroScene8WailmerLaunch_Pal, BG_PLTT_SLOT(0), 10*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene8WailmerLaunch_Pal, BG_PLTT_SLOT(PAL_IX_0), 10*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene8WailmerLaunch_Gfx, OBJ_VRAM0, 0x2C00);
DmaCopy16(3, gIntroScene8WailmerLaunch_Pal, OBJ_PLTT_SLOT(0), 10*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene8WailmerLaunch_Pal, OBJ_PLTT_SLOT(PAL_IX_0), 10*PLTT_SLOT_SIZE);
gMain.dispcntBackup = REG_DISPCNT;
IntroScene8WailmerLaunch_InitVars();
@@ -2131,7 +2131,7 @@ void IntroScene8WailmerLaunch_58_ResetTilemap(void)
gOamBuffer[i].size = 0;
gOamBuffer[i].tileNum = 0;
gOamBuffer[i].priority = 0;
gOamBuffer[i].paletteNum = 0;
gOamBuffer[i].paletteNum = PAL_IX_0;
gOamBuffer[i].affineParam = 0;
}
@@ -2146,9 +2146,9 @@ void IntroScene9BallFlight_59_LoadSkySpeedOrbs(void)
DmaCopy16(3, gIntroScene9BallFlight_BG3Tilemap, BG_VRAM, BG_SCREEN_SIZE);
DmaCopy16(3, gIntroScene9BallFlightClouds_Gfx, BG_CHAR_SCREEN_ADDR(1,0), 0x2400);
DmaCopy16(3, gIntroScene9BallFlight_Pal, BG_PLTT_SLOT(0), 2*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene9BallFlight_Pal, BG_PLTT_SLOT(PAL_IX_0), 2*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene9BallFlightall_Gfx, OBJ_VRAM0, 0x7000);
DmaCopy16(3, gIntroScene9BallFlight_Pal, OBJ_PLTT_SLOT(0), 2*PLTT_SLOT_SIZE);
DmaCopy16(3, gIntroScene9BallFlight_Pal, OBJ_PLTT_SLOT(PAL_IX_0), 2*PLTT_SLOT_SIZE);
gMain.dispcntBackup = REG_DISPCNT;
IntroScene9BallFlight_InitVars();
@@ -2236,14 +2236,14 @@ void IntroScene9BallFlight_62_MoveBallSkyFadeWhite(void)
gIntroObjWhiteFlash = 32;
}
BrightenPalette(gIntroScene9BallFlight_Pal, (u8 *)OBJ_PLTT_SLOT(0), 0x20, gIntroObjWhiteFlash);
BrightenPalette(gIntroScene9BallFlight_Pal, OBJ_PLTT_SLOT(PAL_IX_0), 0x20, gIntroObjWhiteFlash);
if (gIntroFrameCounter > 136)
{
gIntroBGWhiteFlash += 2;
if (gIntroBGWhiteFlash > 32)
gIntroBGWhiteFlash = 0x20;
BrightenPalette(gIntroScene9BallFlight_Pal, (u8 *)BG_PLTT_SLOT(0), 0x40, gIntroBGWhiteFlash);
BrightenPalette(gIntroScene9BallFlight_Pal, BG_PLTT_SLOT(PAL_IX_0), 0x40, gIntroBGWhiteFlash);
}
gIntroBGParams[0].posX -= 0x24;

View File

@@ -113,7 +113,7 @@ void KecleonBoardProcess_3A_35860(void)
UpdateKecleonScopeItem();
UpdateKecleonScopeVision();
RenderKecleonBoardElements();
DmaCopy16(3, gBonusStageObjPal, OBJ_PLTT_SLOT(9), 0x20);
DmaCopy16(3, gBonusStageObjPal, OBJ_PLTT_SLOT(PAL_IX_9), PLTT_SLOT_SIZE);
}
void KecleonBoardProcess_3B_35AA4(void)
@@ -841,13 +841,13 @@ void RenderKecleonSprites(void)
gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY;
if (gCurrentPinballGame->bossVulnerable == 20) {
if(gCurrentPinballGame->bossFrameTimer < 10)
gOamBuffer[oamSimple->oamId].paletteNum = 10;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_10;
else
gOamBuffer[oamSimple->oamId].paletteNum = 2;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_2;
}
else
{
gOamBuffer[oamSimple->oamId].paletteNum = 2;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_2;
}
}
else
@@ -879,13 +879,13 @@ void RenderKecleonSprites(void)
if (sp0 == 20)
{
if (gCurrentPinballGame->bossFrameTimer < 10)
gOamBuffer[oamSimple->oamId].paletteNum = 11;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_11;
else
gOamBuffer[oamSimple->oamId].paletteNum = 4;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_4;
}
else
{
gOamBuffer[oamSimple->oamId].paletteNum = 4;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_4;
}
}
else
@@ -1090,7 +1090,7 @@ void UpdateKecleonScopeVision(void)
}
}
DmaCopy16(3, &gBG0TilemapBuffer[0x400], (void *)0x06001000, 0x500);
DmaCopy16(3, &gBG0TilemapBuffer[0x400], BG_CHAR_SCREEN_ADDR(0,2), 0x500);
}
void RenderKecleonBoardElements(void)

View File

@@ -23,7 +23,7 @@ extern struct SongHeader se_kyogre_dive;
extern struct SongHeader se_kyogre_spawn_whirlpool;
extern struct SongHeader se_kyogre_freeze_ring;
extern struct SongHeader se_kyogre_departs;
extern const u8 *gKyogreFadeInPaletteProgression[];
extern const Palette *gKyogreFadeInPaletteProgression[];
extern const u16 gKyogreAnimFramesetTable[][3];
extern const s16 gKyogreRisingPaletteCycleIndices[];
extern const s16 gKyogreSplashAnimIndices[];
@@ -111,9 +111,9 @@ void KyogreBoardProcess_3A_383E4(void)
UpdateKyogreFieldEntities();
AnimateKyogreBackground();
m4aSongNumStart(MUS_BONUS_FIELD_KYOGRE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, &gKyogreFadeInPaletteProgression[0][0], (void *)0x05000000, 0x100);
DmaCopy16(3, gBonusStageObjPal, OBJ_PLTT_SLOT(9), 0x20);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
DmaCopy16(3, gKyogreFadeInPaletteProgression[0][0], BG_PLTT, 8*PLTT_SLOT_SIZE);
DmaCopy16(3, gBonusStageObjPal, OBJ_PLTT_SLOT(PAL_IX_9), PLTT_SLOT_SIZE);
}
void KyogreBoardProcess_3B_3869C(void)
@@ -135,8 +135,8 @@ void KyogreBoardProcess_3B_3869C(void)
gCurrentPinballGame->bossLightFadeInCounter = 5;
gCurrentPinballGame->stageTimer++;
DmaCopy16(3, &gKyogreFadeInPaletteProgression[gCurrentPinballGame->bossLightFadeInCounter][0], (void *)0x05000000, 0x60);
DmaCopy16(3, &gKyogreFadeInPaletteProgression[gCurrentPinballGame->bossLightFadeInCounter][0x80], (void *)0x05000080, 0x80);
DmaCopy16(3, gKyogreFadeInPaletteProgression[gCurrentPinballGame->bossLightFadeInCounter][0], PLTT, 3*PLTT_SLOT_SIZE);
DmaCopy16(3, gKyogreFadeInPaletteProgression[gCurrentPinballGame->bossLightFadeInCounter][4], BG_PLTT_SLOT(PAL_IX_4), 4*PLTT_SLOT_SIZE);
if (gCurrentPinballGame->cameraYAdjust >= -32)
gCurrentPinballGame->flippersDisabled = FALSE;
} else
@@ -294,7 +294,7 @@ void UpdateKyogreEntityLogic(void)
break;
case KYOGRE_ENTITY_STATE_ENTRY:
index = gKyogreRisingPaletteCycleIndices[(gCurrentPinballGame->kyogreWaveTimer % 280) / 14];
DmaCopy16(3, gKyogreWaterAnimFrame_Pals[index], OBJ_PLTT_SLOT(15), PLTT_SLOT_SIZE);
DmaCopy16(3, gKyogreWaterAnimFrame_Pals[index], OBJ_PLTT_SLOT(PAL_IX_15), PLTT_SLOT_SIZE);
gCurrentPinballGame->kyogreWaveTimer++;
if (gKyogreAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][1] > gCurrentPinballGame->bossFrameTimer)
{
@@ -311,7 +311,7 @@ void UpdateKyogreEntityLogic(void)
gCurrentPinballGame->bossNextAttackState = KYOGRE_ENTITY_STATE_SHOCKWAVE;
gCurrentPinballGame->bossMovementPhase = 0;
gCurrentPinballGame->bossRoarTimer = 60;
DmaCopy16(3, &gKyogreWaterAnimFrame_Pals[5], (void *)0x050003E0, 0x20);
DmaCopy16(3, &gKyogreWaterAnimFrame_Pals[5], OBJ_PLTT_SLOT(PAL_IX_15), PLTT_SLOT_SIZE);
}
if (gCurrentPinballGame->bossFramesetIndex == 32)
@@ -722,7 +722,7 @@ void RenderKyogreSprites(void)
if (gCurrentPinballGame->legendaryFlashState > 9)
{
palette = 11;
palette = PAL_IX_11;
for (i = 0; i < 10; i++)
{
oamSimple = &group->oam[i];
@@ -734,15 +734,15 @@ void RenderKyogreSprites(void)
else
{
if (gCurrentPinballGame->legendaryFlashState == 1)
palette = 14;
palette = PAL_IX_14;
else if (gCurrentPinballGame->legendaryFlashState == 3)
palette = 11;
palette = PAL_IX_11;
else if (var2 == 20)
palette = 4;
palette = PAL_IX_4;
else if (var2 == 21)
palette = 3;
palette = PAL_IX_3;
else
palette = 15;
palette = PAL_IX_15;
for (i = 0; i < 10; i++)
{
@@ -840,7 +840,7 @@ void UpdateKyogreFieldEntities(void)
for (i = 0; i < 6; i++)
{
oamSimple = &group->oam[i];
gOamBuffer[oamSimple->oamId].paletteNum = 13;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_MON_PORTRAIT;
gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->creatureOamPriority;
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY;
@@ -885,7 +885,7 @@ void UpdateKyogreFieldEntities(void)
if (gCurrentPinballGame->freezeTrapAnimFrame == 2)
{
int a; // force addition of 8 instead of offsetting the global constant
DmaCopy16(3, gBall_Pals[a = gCurrentPinballGame->ballUpgradeType + 8], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[a = gCurrentPinballGame->ballUpgradeType + 8], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
}
break;
@@ -991,7 +991,7 @@ void UpdateKyogreFieldEntities(void)
if (gCurrentPinballGame->freezeTrapAnimFrame == 15)
{
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), 0x20);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
m4aSongNumStart(SE_KYOGRE_FREEZE_ESCAPED);
}
}
@@ -1343,8 +1343,8 @@ void AnimateKyogreBackground(void)
&& gCurrentPinballGame->stageTimer < 600)
{
index = gKyogreIntroPaletteCycleIndices[(gCurrentPinballGame->stageTimer % 240) / 24];
DmaCopy16(3, gKyogreIntroIcePalette[index], OBJ_PLTT_SLOT(10), 0x20);
DmaCopy16(3, gKyogreIntroShorePalette[index], OBJ_PLTT_SLOT(5), 0x20);
DmaCopy16(3, gKyogreIntroIcePalette[index], OBJ_PLTT_SLOT(PAL_IX_10), 0x20);
DmaCopy16(3, gKyogreIntroShorePalette[index], OBJ_PLTT_SLOT(PAL_IX_5), 0x20);
var0 = 2;
index = 0;
gCurrentPinballGame->kyogreBgAnimTimer = index;
@@ -1359,9 +1359,9 @@ void AnimateKyogreBackground(void)
for (i = 0; i < 0x400; i++)
gBG0TilemapBuffer[0x800 + i] = gKyogreWaterBackgroundTilemap[i] + index * 4;
DmaCopy16(3, &gBG0TilemapBuffer[0x800], (void *)0x06000000, 0x800);
DmaCopy16(3, &gBG0TilemapBuffer[0x800], BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
index = gKyogreWaterPaletteSegmentCycle[(gMain.systemFrameCount % 96) / 24];
DmaCopy16(3, &gKyogreFadeInPaletteProgression[gCurrentPinballGame->bossLightFadeInCounter][index * 0x20], (void *)0x05000060, 0x20);
DmaCopy16(3, gKyogreFadeInPaletteProgression[gCurrentPinballGame->bossLightFadeInCounter][index], BG_PLTT_SLOT(PAL_IX_3), PLTT_SLOT_SIZE);
for (j = 0; j < 4; j++)
{

View File

@@ -291,7 +291,7 @@ void DefaultMainCallback(void)
if (REG_DISPSTAT & DISPSTAT_VBLANK_INTR)
{
VBlankIntrWait();
DmaCopy32(3, gOamBuffer, (void *)OAM, OAM_SIZE);
DmaCopy32(3, gOamBuffer, OAM, OAM_SIZE);
REG_DISPCNT = gMain.dispcntBackup;
REG_BG0HOFS = gMain.bgOffsets[0].xOffset;
REG_BG0VOFS = gMain.bgOffsets[0].yOffset;

View File

@@ -369,7 +369,7 @@ void HandleRubyBumperHit(void)
gCurrentPinballGame->bannerSlideTimer = 50;
gCurrentPinballGame->bannerSlideVelocity = 0;
DmaCopy16(3, gModeBannerTilemaps[7], (void *)0x06015800, 0x2400);
DmaCopy16(3, gModeBanner_Pals[7], OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gModeBanner_Pals[7], OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
gMain.blendControl = 0xCE;
}
}

View File

@@ -3,6 +3,7 @@
#include "m4a.h"
#include "constants/bg_music.h"
#include "constants/board/ruby_states.h"
#include "inline_load_lighting_pal.h"
/// @brief
/// @param arg0 0 = shop, 1= evolution selection
@@ -31,7 +32,7 @@ void UpdateShopEntryAnimation(s16 arg0)
gCurrentPinballGame->activePortraitType = 18;
DmaCopy16(3, &gPokemonNameDisplayGfx, OBJ_VRAM1 + 0x1C00, 0x940);
DmaCopy16(3, gShopNameDisplay_Pals, BG_PLTT_SLOT(12), PLTT_SLOT_SIZE);
DmaCopy16(3, gShopNameDisplay_Pals, BG_PLTT_SLOT(PAL_IX_SHOP_BG), PLTT_SLOT_SIZE);
}
if (gCurrentPinballGame->shopEntryTimer >= 145 && gCurrentPinballGame->shopEntryTimer < 150)
@@ -42,16 +43,7 @@ void UpdateShopEntryAnimation(s16 arg0)
if (gCurrentPinballGame->shopEntryTimer <= 148)
{
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 1;
LoadObjLightingPalette(LIGHTING_PAL_IX_DIMMING);
gCurrentPinballGame->paletteSwapActive = FALSE;
}
}
@@ -61,16 +53,7 @@ void UpdateShopEntryAnimation(s16 arg0)
if (gCurrentPinballGame->shopEntryTimer <= 145)
{
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 2;
LoadObjLightingPalette(LIGHTING_PAL_IX_DIM);
gCurrentPinballGame->paletteSwapActive = FALSE;
}
}
@@ -92,7 +75,7 @@ void UpdateShopEntryAnimation(s16 arg0)
gMain.fieldSpriteGroups[FIELD_SG_MAIN_SHOP_ARROWS]->active = TRUE;
gMain.fieldSpriteGroups[FIELD_SG_MAIN_SHOP_PORTRAIT_OVERLAY]->active = TRUE;
DmaCopy16(3, gShopEvoUI_Pals, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gShopEvoUI_Pals, OBJ_PLTT_SLOT(PAL_IX_SHOP_UI), PLTT_SLOT_SIZE);
DmaCopy16(3, gShopModeBG0_0_Tilemap, BG_CHAR_SCREEN_ADDR(0,4), 0xC40);
gMain.bgOffsets[0].yOffset = 80;
@@ -276,18 +259,8 @@ void UpdateShopEntryAnimation(s16 arg0)
if (gCurrentPinballGame->catchModeEventTimer <= 3)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 1;
LoadObjLightingPalette_0(LIGHTING_PAL_IX_DIMMING);
LoadObjLightingPalette(LIGHTING_PAL_IX_DIMMING);
gCurrentPinballGame->paletteSwapActive = TRUE;
}
}
@@ -297,18 +270,8 @@ void UpdateShopEntryAnimation(s16 arg0)
if (gCurrentPinballGame->catchModeEventTimer == 0)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 0;
LoadObjLightingPalette_0(LIGHTING_PAL_IX_NORMAL);
LoadObjLightingPalette(LIGHTING_PAL_IX_NORMAL);
gCurrentPinballGame->paletteSwapActive = TRUE;
}
}
@@ -379,7 +342,7 @@ void UpdateShopEntryAnimation(s16 arg0)
gCurrentPinballGame->bannerSlideVelocity = 0;
DmaCopy16(3, gModeBannerTilemaps[3], OBJ_VRAM1 + 0x1800, 0x2400);
DmaCopy16(3, gModeBanner_Pals[3], OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gModeBanner_Pals[3], OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
gMain.blendControl = 206;
gCurrentPinballGame->shopEntryTimer = 148;
@@ -395,7 +358,7 @@ void UpdateShopEntryAnimation(s16 arg0)
gCurrentPinballGame->activePortraitType = 18;
DmaCopy16(3, &gPokemonNameDisplayGfx, OBJ_VRAM1 + 0x1C00, 0x940);
DmaCopy16(3, gEvoNameDisplay_Pals, BG_PLTT_SLOT(12), PLTT_SLOT_SIZE);
DmaCopy16(3, gEvoNameDisplay_Pals, BG_PLTT_SLOT(PAL_IX_SHOP_BG), PLTT_SLOT_SIZE);
}
if (gCurrentPinballGame->shopEntryTimer == 145)
@@ -429,7 +392,7 @@ void UpdateShopEntryAnimation(s16 arg0)
gMain.fieldSpriteGroups[FIELD_SG_MAIN_SHOP_PORTRAIT_OVERLAY]->active = TRUE;
gMain.fieldSpriteGroups[FIELD_SG_MAIN_SHOP_ARROWS]->active = TRUE;
DmaCopy16(3, gShopEvoUI_Pals, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gShopEvoUI_Pals, OBJ_PLTT_SLOT(PAL_IX_SHOP_UI), PLTT_SLOT_SIZE);
gMain.bgOffsets[0].yOffset = 80;
gMain.shopPanelSlideOffset = 0;
@@ -710,17 +673,8 @@ void UpdateShopEntryAnimation(s16 arg0)
if (gCurrentPinballGame->catchModeEventTimer <= 3)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 1;
LoadObjLightingPalette_0(LIGHTING_PAL_IX_DIMMING);
LoadObjLightingPalette(LIGHTING_PAL_IX_DIMMING);
gCurrentPinballGame->paletteSwapActive = TRUE;
}
}
@@ -731,18 +685,8 @@ void UpdateShopEntryAnimation(s16 arg0)
if (gCurrentPinballGame->catchModeEventTimer != 0)
return;
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 0;
LoadObjLightingPalette_0(LIGHTING_PAL_IX_NORMAL);
LoadObjLightingPalette(LIGHTING_PAL_IX_NORMAL);
gCurrentPinballGame->paletteSwapActive = TRUE;
}
}

View File

@@ -52,7 +52,7 @@ void CleanupCatchEmState(void)
gCurrentPinballGame->portraitDisplayState = PORTRAIT_DISPLAY_MODE_BOARD_CENTER;
ResetEventState();
for (i = 0; i < 6; i++)
gCurrentPinballGame->catchTilePalette[i] = 13;
gCurrentPinballGame->catchTilePalette[i] = PAL_IX_MON_PORTRAIT;
for (i = 0; i < 3; i++)
{
@@ -93,7 +93,7 @@ void InitCatchEmMode(void)
}
gCurrentPinballGame->catchEmModeStartCount++;
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(12), PLTT_SLOT_SIZE);
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(PAL_IX_HUD), PLTT_SLOT_SIZE);
for (i = 0; i < 6; i++)
{
@@ -148,7 +148,7 @@ void UpdateCatchEmMode(void)
gCurrentPinballGame->hatchRevealPhase = 0;
gCurrentPinballGame->boardSubState++;
for (i = 0; i < 6; i++)
gCurrentPinballGame->catchTilePalette[i] = 15;
gCurrentPinballGame->catchTilePalette[i] = PAL_IX_MON_SHADOW_PORTRAIT;
break;
case CATCH_EM_SUBSTATE_START_MODE_BANNER:
if (gMain.modeChangeFlags == MODE_CHANGE_NONE)
@@ -175,7 +175,7 @@ void UpdateCatchEmMode(void)
gCurrentPinballGame->bannerSlideTimer = 50;
gCurrentPinballGame->bannerSlideVelocity = 0;
DmaCopy16(3, gModeBannerTilemaps[2], (void *)0x06015800, 0x2400);
DmaCopy16(3, gModeBanner_Pals[2], OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gModeBanner_Pals[2], OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
gMain.blendControl = 0xCE;
}
else if (gCurrentPinballGame->modeAnimTimer == 73)
@@ -210,7 +210,7 @@ void UpdateCatchEmMode(void)
gCurrentPinballGame->bannerSlideTimer = 50;
gCurrentPinballGame->bannerSlideVelocity = 0;
DmaCopy16(3, gModeBannerTilemaps[2], (void *)0x06015800, 0x2400);
DmaCopy16(3, gModeBanner_Pals[2], OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gModeBanner_Pals[2], OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
gMain.blendControl = 0xCE;
}
else if (gCurrentPinballGame->modeAnimTimer == 47)
@@ -242,7 +242,7 @@ void UpdateCatchEmMode(void)
{
gCurrentPinballGame->activePortraitType = 10;
DmaCopy16(3, gCatchMonAppearFx_Gfx, (void *)0x06015800, 0x1400);
DmaCopy16(3, gCatchMonAppearFx_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchMonAppearFx_Pal, OBJ_PLTT_SLOT(PAL_IX_CATCH_TILE_FX), PLTT_SLOT_SIZE);
m4aSongNumStart(SE_CATCH_MON_ENTITY_APPEARS);
gCurrentPinballGame->boardSubState++;
gCurrentPinballGame->stageTimer = 0;
@@ -253,8 +253,8 @@ void UpdateCatchEmMode(void)
return;
case CATCH_EM_SUBSTATE_SETUP_CATCH_HIT_COUNT:
ResetCatchFrameState();
DmaCopy16(3, gCaptureHit_Pal, OBJ_PLTT_SLOT(15), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchSpritePalettes, OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gCaptureHit_Pal, OBJ_PLTT_SLOT(PAL_IX_MON_SHADOW_PORTRAIT), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchSpritePalettes, OBJ_PLTT_SLOT(PAL_IX_MON_PORTRAIT), PLTT_SLOT_SIZE);
gCurrentPinballGame->catchTargetX = 118;
gCurrentPinballGame->catchTargetY = 264;
gCurrentPinballGame->evoBlinkTimer = 0;
@@ -339,7 +339,7 @@ void InitJirachiBonus(void)
gCurrentPinballGame->holeIndicators[1] = gCurrentPinballGame->holeIndicators[0];
gCurrentPinballGame->holeIndicators[2] = gCurrentPinballGame->holeIndicators[0];
gCurrentPinballGame->holeIndicators[3] = gCurrentPinballGame->holeIndicators[0];
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(12), PLTT_SLOT_SIZE);
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(PAL_IX_HUD), PLTT_SLOT_SIZE);
}
void UpdateJirachiBonus(void)
@@ -383,7 +383,7 @@ void UpdateJirachiBonus(void)
gCurrentPinballGame->bannerSlideTimer = 50;
gCurrentPinballGame->bannerSlideVelocity = 0;
DmaCopy16(3, gModeBannerTilemaps[5], (void *)0x06015800, 0x2400);
DmaCopy16(3, gModeBanner_Pals[5], OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gModeBanner_Pals[5], OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
gMain.blendControl = 0xCE;
}
else if (gCurrentPinballGame->modeAnimTimer == 73)
@@ -417,7 +417,7 @@ void UpdateJirachiBonus(void)
gCurrentPinballGame->bannerSlideTimer = 50;
gCurrentPinballGame->bannerSlideVelocity = 0;
DmaCopy16(3, gModeBannerTilemaps[5], (void *)0x06015800, 0x2400);
DmaCopy16(3, gModeBanner_Pals[5], OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gModeBanner_Pals[5], OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
gMain.blendControl = 0xCE;
return;
}
@@ -439,8 +439,8 @@ void UpdateJirachiBonus(void)
}
break;
case JIRACHI_CATCH_SUBSTATE_SETUP_CATCH_HIT_COUNT:
DmaCopy16(3, gCaptureHit_Pal, OBJ_PLTT_SLOT(15), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchSpritePalettes, OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gCaptureHit_Pal, OBJ_PLTT_SLOT(PAL_IX_MON_SHADOW_PORTRAIT), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchSpritePalettes, OBJ_PLTT_SLOT(PAL_IX_CATCH_MON), PLTT_SLOT_SIZE);
gCurrentPinballGame->evoBlinkTimer = 0;
gCurrentPinballGame->catchLights[0] = 2;
gCurrentPinballGame->catchLights[1] = 2;
@@ -880,7 +880,7 @@ void PlayCatchMonAppearsAnimation(void)
if (gCurrentPinballGame->catchRevealFrameId > 2)
{
DmaCopy16(3, gCatchSpritePalettes, OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchSpritePalettes, OBJ_PLTT_SLOT(PAL_IX_CATCH_MON), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchSpriteGfxBuffer, (void *)0x06010CA0, 0x480);
DrawCatchMonBoardSprite();
}
@@ -921,6 +921,6 @@ void ResetCatchFrameState(void)
gCurrentPinballGame->catchRevealFrameId = 0;
for (i = 0; i < 6; i++)
gCurrentPinballGame->catchTilePalette[i] = 13;
gCurrentPinballGame->catchTilePalette[i] = PAL_IX_LOCATION_PORTRAIT;
}

View File

@@ -73,7 +73,7 @@ void RevealCatchTilesSequential(void)
if (gCurrentPinballGame->catchRevealFrameId == 0 && gCurrentPinballGame->catchTileRevealFrameAnimTimer == 0)
{
gCurrentPinballGame->activePortraitType = 11;
DmaCopy16(3, gCatchTile_Reveal_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchTile_Reveal_Pal, OBJ_PLTT_SLOT(PAL_IX_CATCH_TILE_FX), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchTile_RevealTilesGfx, (void *)0x06015800, 0x2800);
}
@@ -197,7 +197,7 @@ void RevealCatchTilesBurst(void)
case 1:
gCurrentPinballGame->activePortraitType = 5;
DmaCopy16(3, gCatchTile_BurstStart_Gfx, (void *)0x06015800, 0x2000);
DmaCopy16(3, gCatchTile_BurstStart_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchTile_BurstStart_Pal, OBJ_PLTT_SLOT(PAL_IX_CATCH_TILE_FX), PLTT_SLOT_SIZE);
gMain.fieldSpriteGroups[FIELD_SG_CATCH_BURST_LIGHTNING_STRIKE]->active = TRUE;
m4aSongNumStart(SE_CATCH_ALL_REVEAL_LIGHTNING);
gCurrentPinballGame->hatchRevealPhase++;
@@ -243,7 +243,7 @@ void RevealCatchTilesBurst(void)
case 3:
gCurrentPinballGame->activePortraitType = 6;
DmaCopy16(3, gCatchTile_BurstStage2_Gfx, (void *)0x06015800, 0x800);
DmaCopy16(3, gCatchTile_BurstStage2_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchTile_BurstStage2_Pal, OBJ_PLTT_SLOT(PAL_IX_CATCH_TILE_FX), PLTT_SLOT_SIZE);
gMain.fieldSpriteGroups[FIELD_SG_CATCH_BURST_TILE_FLASH_FX]->active = TRUE;
gCurrentPinballGame->hatchRevealPhase++;
gCurrentPinballGame->revealAnimFrameCounter = 0;
@@ -284,7 +284,7 @@ void RevealCatchTilesBurst(void)
case 5:
gCurrentPinballGame->activePortraitType = 7;
DmaCopy16(3, gCatchTile_BurstStage3_Gfx, (void *)0x06015800, 0x2000);
DmaCopy16(3, gCatchTile_BurstStage3_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchTile_BurstStage3_Pal, OBJ_PLTT_SLOT(PAL_IX_CATCH_TILE_FX), PLTT_SLOT_SIZE);
gCurrentPinballGame->hatchRevealPhase++;
InitBurstTileParticles();
m4aSongNumStart(SE_CATCH_ALL_REVEAL_SHATTER);
@@ -302,7 +302,7 @@ void RevealCatchTilesBurst(void)
else
{
for (i = 0; i < 6; i++)
gCurrentPinballGame->catchTilePalette[i] = 13;
gCurrentPinballGame->catchTilePalette[i] = PAL_IX_MON_PORTRAIT;
gMain.blendBrightness = ((8 - gCurrentPinballGame->revealAnimFrameCounter) / 4) + 16;
}
@@ -328,7 +328,7 @@ void RevealCatchTilesBurst(void)
case 7:
gCurrentPinballGame->activePortraitType = 8;
DmaCopy16(3, gCatchTile_BurstStage4_Gfx, (void *)0x06015800, 0x1800);
DmaCopy16(3, gCatchTile_BurstStage4_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchTile_BurstStage4_Pal, OBJ_PLTT_SLOT(PAL_IX_CATCH_TILE_FX), PLTT_SLOT_SIZE);
gMain.fieldSpriteGroups[FIELD_SG_CATCH_BURST_PANEL_ELECTRIFY_FX]->active = TRUE;
gCurrentPinballGame->hatchRevealPhase++;
gCurrentPinballGame->startButtonDisabled = FALSE;

View File

@@ -5,6 +5,8 @@
#include "constants/board/main_board.h"
#include "constants/board/bonus_board.h"
#include "constants/anglemath.h"
#include "inline_load_lighting_pal.h"
extern struct SongHeader se_roulette_tick;
extern struct SongHeader se_mon_catch_ball_woosh;
@@ -390,7 +392,7 @@ void GivePrize(void)
gCurrentPinballGame->ballUpgradeTimer = TICKS_FOR_TIME(1,0);
MPlayStart(&gMPlayInfo_SE1, &se_ball_upgrade);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), 0x20);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
}
break;
case PRIZE_BALL_UPGRADE_TO_MASTER:
@@ -399,7 +401,7 @@ void GivePrize(void)
gCurrentPinballGame->ballUpgradeType = BALL_UPGRADE_TYPE_MASTER_BALL;
gCurrentPinballGame->ballUpgradeTimer = TICKS_FOR_TIME(1,0);
MPlayStart(&gMPlayInfo_SE1, &se_ball_upgrade);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), 0x20);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
}
break;
case PRIZE_10_COINS:
@@ -588,22 +590,14 @@ void RunMonCaptureSequence(void)
break;
case 2:
DmaCopy16(3, gBall_Pals[(s16)(gCurrentPinballGame->ballUpgradeType + 4)], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[(s16)(gCurrentPinballGame->ballUpgradeType + 4)], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
gMain.blendBrightness = 4;
if (gCurrentPinballGame->captureSequenceFrame > 1)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
LoadObjLightingPalette_0(LIGHTING_PAL_IX_DIMMING);
LoadObjLightingPalette(LIGHTING_PAL_IX_DIMMING);
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 1;
gCurrentPinballGame->paletteSwapActive = TRUE;
}
break;
@@ -613,21 +607,13 @@ void RunMonCaptureSequence(void)
if (gCurrentPinballGame->captureSequenceFrame > 1)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
LoadObjLightingPalette_0(LIGHTING_PAL_IX_DIM);
LoadObjLightingPalette(LIGHTING_PAL_IX_DIM);
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[2][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 2;
gCurrentPinballGame->paletteSwapActive = TRUE;
}
DmaCopy16(3, gBall_Pals[8], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[8], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
break;
case 4:
@@ -649,15 +635,15 @@ void RunMonCaptureSequence(void)
&& gCurrentPinballGame->boardSubState == JIRACHI_CATCH_SUBSTATE_CATCH_HIT_PHASE)
))
{
DmaCopy16(3, gCatchSpritePalettes[2], OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchSpritePalettes[2], OBJ_PLTT_SLOT(PAL_IX_CATCH_MON), PLTT_SLOT_SIZE);
}
DmaCopy16(3, gBall_Pals[8], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[8], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
gMain.blendBrightness = 6;
}
else
{
DmaCopy16(3, gBall_Pals[(s16)(gCurrentPinballGame->ballUpgradeType + 4)], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[(s16)(gCurrentPinballGame->ballUpgradeType + 4)], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
gMain.blendBrightness = 7;
}
@@ -705,7 +691,7 @@ void RunMonCaptureSequence(void)
gMain.fieldSpriteGroups[FIELD_SG_CAPTURE_MON_BALL_FX]->active = FALSE;
break;
case 11:
DmaCopy16(3, gBall_Pals[(s16)(gCurrentPinballGame->ballUpgradeType + 4)], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[(s16)(gCurrentPinballGame->ballUpgradeType + 4)], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
tempVector.x = (gCurrentPinballGame->catchTargetX << 8) - gCurrentPinballGame->ball->positionQ8.x;
tempVector.y = (gCurrentPinballGame->catchTargetY << 8) - gCurrentPinballGame->ball->positionQ8.y;
@@ -725,7 +711,7 @@ void RunMonCaptureSequence(void)
|| (gCurrentPinballGame->boardState == MAIN_BOARD_STATE_JIRACHI_CATCH_MODE
&& gCurrentPinballGame->boardSubState == JIRACHI_CATCH_SUBSTATE_CATCH_HIT_PHASE))
{
DmaCopy16(3, gCatchSpritePalettes[0], OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchSpritePalettes[0], OBJ_PLTT_SLOT(PAL_IX_CATCH_MON), PLTT_SLOT_SIZE);
}
for (i = 0; i < 4; i++)
@@ -764,12 +750,12 @@ void RunMonCaptureSequence(void)
break;
case 14:
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
gCurrentPinballGame->ball->spinAngle -= ANGLE_45;
break;
case 15:
DmaCopy16(3, gBall_Pals[(s16)(gCurrentPinballGame->ballUpgradeType + 4)], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[(s16)(gCurrentPinballGame->ballUpgradeType + 4)], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
gCurrentPinballGame->ball->spinAngle -= ANGLE_45;
break;
@@ -777,7 +763,7 @@ void RunMonCaptureSequence(void)
if (gCurrentPinballGame->captureSequenceFrame == 0)
m4aSongNumStart(SE_MON_CATCH_ENERGY_BEAM);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
gCurrentPinballGame->ball->spinAngle = 0x7000;
break;
@@ -844,7 +830,7 @@ void RunMonCaptureSequence(void)
&& gCurrentPinballGame->boardSubState == CATCH_EM_SUBSTATE_CATCH_HIT_PHASE)
|| (gCurrentPinballGame->boardState == MAIN_BOARD_STATE_JIRACHI_CATCH_MODE
&& gCurrentPinballGame->boardSubState == JIRACHI_CATCH_SUBSTATE_CATCH_HIT_PHASE))
DmaCopy16(3, gCatchSpritePalettes[1], OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchSpritePalettes[1], OBJ_PLTT_SLOT(PAL_IX_CATCH_MON), PLTT_SLOT_SIZE);
}
else if (gCurrentPinballGame->captureSequenceTimer == 19 || gCurrentPinballGame->captureSequenceTimer == 22)
{
@@ -855,7 +841,7 @@ void RunMonCaptureSequence(void)
&& gCurrentPinballGame->boardSubState == CATCH_EM_SUBSTATE_CATCH_HIT_PHASE)
|| (gCurrentPinballGame->boardState == MAIN_BOARD_STATE_JIRACHI_CATCH_MODE
&& gCurrentPinballGame->boardSubState == JIRACHI_CATCH_SUBSTATE_CATCH_HIT_PHASE))
DmaCopy16(3, gCatchSpritePalettes[3], OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchSpritePalettes[3], OBJ_PLTT_SLOT(PAL_IX_CATCH_MON), PLTT_SLOT_SIZE);
}
if (gCurrentPinballGame->captureSequenceTimer == 23)
@@ -940,7 +926,7 @@ void RunMonCaptureSequence(void)
case 29:
gMain.blendBrightness = 4;
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
spriteGroup = gMain.fieldSpriteGroups[FIELD_SG_CAPTURE_MON_BALL_FX];
@@ -972,17 +958,8 @@ void RunMonCaptureSequence(void)
{
if (gCurrentPinballGame->captureSequenceFrame == 0)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[1][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 1;
LoadObjLightingPalette_0(LIGHTING_PAL_IX_DIMMING);
LoadObjLightingPalette(LIGHTING_PAL_IX_DIMMING);
gCurrentPinballGame->paletteSwapActive = TRUE;
}
}
@@ -992,18 +969,8 @@ void RunMonCaptureSequence(void)
if (gCurrentPinballGame->captureSequenceFrame > 4)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
}
else
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[0][10], OBJ_PLTT_SLOT(10), 3*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePaletteIndex = 0;
LoadObjLightingPalette_0(LIGHTING_PAL_IX_NORMAL);
LoadObjLightingPalette(LIGHTING_PAL_IX_NORMAL);
gCurrentPinballGame->paletteSwapActive = TRUE;
}
}
@@ -1188,7 +1155,7 @@ void RunMonCaptureSequence(void)
}
}
DmaCopy16(3, &gBG0TilemapBuffer, 0x06002000, 0x800);
DmaCopy16(3, &gBG0TilemapBuffer, BG_CHAR_SCREEN_ADDR(0,4), BG_SCREEN_SIZE);
}
if (gCurrentPinballGame->captureSequenceFrame >= 240 && gCurrentPinballGame->captureSequenceFrame <= 269)
@@ -1203,7 +1170,7 @@ void RunMonCaptureSequence(void)
}
}
DmaCopy16(3, &gBG0TilemapBuffer, 0x06002000, 0x800);
DmaCopy16(3, &gBG0TilemapBuffer, BG_CHAR_SCREEN_ADDR(0,4), BG_SCREEN_SIZE);
if (gCurrentPinballGame->captureSequenceFrame == 269)
{

View File

@@ -50,27 +50,39 @@ void RestoreBoardObjPalettes(s16 arg0)
{
if (gCurrentPinballGame->paletteSwapActive == TRUE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[arg0][0], OBJ_PLTT_SLOT(0), PLTT_SLOT_SIZE);
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[arg0][PAL_IX_DIMMING_BASE_0],
OBJ_PLTT_SLOT(PAL_IX_DIMMING_BASE_0),
PLTT_SLOT_SIZE);
}
if (gMain.selectedField == FIELD_SAPPHIRE)
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[arg0][2], OBJ_PLTT_SLOT(2), 6*PLTT_SLOT_SIZE);
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[arg0][PAL_IX_DIMMING_BASE_2],
OBJ_PLTT_SLOT(PAL_IX_DIMMING_BASE_2),
LIGHTING_BASE_2_SAPPHIRE_COUNT * PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[arg0][2], OBJ_PLTT_SLOT(2), 7*PLTT_SLOT_SIZE);
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[arg0][PAL_IX_DIMMING_BASE_2],
OBJ_PLTT_SLOT(PAL_IX_DIMMING_BASE_2),
LIGHTING_BASE_2_RUBY_COUNT * PLTT_SLOT_SIZE);
}
DmaCopy16(3, gBoardConfig.fieldLayout.objPaletteSets[arg0][10], OBJ_PLTT_SLOT(10), PLTT_SLOT_SIZE);
DmaCopy16(3,
gBoardConfig.fieldLayout.objPaletteSets[arg0][PAL_IX_DIMMING_BASE_10],
OBJ_PLTT_SLOT(PAL_IX_DIMMING_BASE_10),
PLTT_SLOT_SIZE);
// related to Y position of camera on the field
if (gCurrentPinballGame->cameraYViewport < 170)
{
DmaCopy16(3, gFieldVariant_Pals[gMain.selectedField][arg0 * 2], OBJ_PLTT_SLOT(11), PLTT_SLOT_SIZE);
DmaCopy16(3, gFieldVariant_Pals[gMain.selectedField][arg0 * 2], OBJ_PLTT_SLOT(PAL_IX_HATCH_EGG), PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gFieldVariant_Pals[gMain.selectedField][arg0 * 2 + 1], OBJ_PLTT_SLOT(11), PLTT_SLOT_SIZE);
DmaCopy16(3, gFieldVariant_Pals[gMain.selectedField][arg0 * 2 + 1], OBJ_PLTT_SLOT(PAL_IX_SPOINK), PLTT_SLOT_SIZE);
}
}

View File

@@ -68,7 +68,7 @@ void InitEvolutionMode(void)
gCurrentPinballGame->evoItemGfxIndex = 0;
}
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(12), PLTT_SLOT_SIZE);
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(PAL_IX_HUD), PLTT_SLOT_SIZE);
gCurrentPinballGame->evoArrowProgress = 0;
gCurrentPinballGame->shopArrowActive = FALSE;
gCurrentPinballGame->catchModeEventTimer = 0;
@@ -259,7 +259,7 @@ void UpdateEvolutionMode(void)
gBG0TilemapBuffer[((j + 15) * 0x20) + i] = 0xC100;
}
DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800);
DmaCopy16(3, gBG0TilemapBuffer, BG_CHAR_SCREEN_ADDR(0,4), BG_SCREEN_SIZE);
}
if (gCurrentPinballGame->stageTimer >= 240 && gCurrentPinballGame->stageTimer < 270)
@@ -271,7 +271,7 @@ void UpdateEvolutionMode(void)
gBG0TilemapBuffer[((j + 15) << 5) + i] = 0x1FF;
}
DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800);
DmaCopy16(3, gBG0TilemapBuffer, BG_CHAR_SCREEN_ADDR(0,4), BG_SCREEN_SIZE);
if (gCurrentPinballGame->stageTimer == 269)
{
gMain.scoreOverlayActive = FALSE;
@@ -389,7 +389,7 @@ void UpdateEvolutionItemAnimation(void)
{
gCurrentPinballGame->activePortraitType = 15;
DmaCopy16(3, gEvoItemAppear_GfxList[gCurrentPinballGame->evoItemGfxIndex], (void *)0x06015800, 0x1C00);
DmaCopy16(3, gEvoItem_Pals[gCurrentPinballGame->evoItemGfxIndex], OBJ_PLTT_SLOT(15), PLTT_SLOT_SIZE);
DmaCopy16(3, gEvoItem_Pals[gCurrentPinballGame->evoItemGfxIndex], OBJ_PLTT_SLOT(PAL_IX_EVO_ITEM), PLTT_SLOT_SIZE);
gCurrentPinballGame->evoItemAnimFrame = 0;
gCurrentPinballGame->evoItemAnimFrameTimer = 0;
}

View File

@@ -32,9 +32,9 @@ void InitBoardIntroMode(void)
LoadPortraitGraphics(PORTRAIT_STATE_CURRENT_LOCATION, PORTRAIT_MAIN_SLOT);
LoadPortraitGraphics(PORTRAIT_STATE_CURRENT_LOCATION, PORTRAIT_ALT_SLOT);
for (i = 0; i < 6; i++)
gCurrentPinballGame->catchTilePalette[i] = 13;
gCurrentPinballGame->catchTilePalette[i] = PAL_IX_LOCATION_PORTRAIT;
DmaCopy16(3, gTravelPortrait_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gTravelPortrait_Pal, OBJ_PLTT_SLOT(PAL_IX_TRAVEL_PAINTER), PLTT_SLOT_SIZE);
DmaCopy16(3, gAreaRouletteSelectedFx_Gfx, (void *)0x06015800, 0x280);
gCurrentPinballGame->activePortraitType = 12;
}

View File

@@ -133,7 +133,7 @@ void AnimateOneUpSprite(void)
if (gCurrentPinballGame->oneUpAnimTimer == 90)
{
group->active = TRUE;
DmaCopy16(3, gOneUpSprite_Pal, OBJ_PLTT_SLOT(12), PLTT_SLOT_SIZE);
DmaCopy16(3, gOneUpSprite_Pal, OBJ_PLTT_SLOT(PAL_IX_TREECKO_1_UP), PLTT_SLOT_SIZE);
}
if (gCurrentPinballGame->oneUpAnimTimer == 85)
@@ -186,11 +186,11 @@ void UpdateSpoinkAnimation(void)
{
if (gCurrentPinballGame->cameraYViewport < 170)
{
DmaCopy16(3, gFieldVariant_Pals[gMain.selectedField][gCurrentPinballGame->activePaletteIndex * 2], OBJ_PLTT_SLOT(11), PLTT_SLOT_SIZE);
DmaCopy16(3, gFieldVariant_Pals[gMain.selectedField][gCurrentPinballGame->paletteDimmingIx * 2], OBJ_PLTT_SLOT(PAL_IX_HATCH_EGG), PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gFieldVariant_Pals[gMain.selectedField][gCurrentPinballGame->activePaletteIndex * 2 + 1], OBJ_PLTT_SLOT(11), PLTT_SLOT_SIZE);
DmaCopy16(3, gFieldVariant_Pals[gMain.selectedField][gCurrentPinballGame->paletteDimmingIx * 2 + 1], OBJ_PLTT_SLOT(PAL_IX_SPOINK), PLTT_SLOT_SIZE);
}
switch (gCurrentPinballGame->spoinkEntityState)
@@ -313,7 +313,7 @@ void RunEvolutionCutscene(void)
if (gCurrentPinballGame->stageTimer == 0)
{
m4aMPlayAllStop();
DmaCopy16(3, (void *)0x05000200, gCurrentPinballGame->pauseObjPalette, 0x200);
DmaCopy16(3, OBJ_PLTT, gCurrentPinballGame->pauseObjPalette, OBJ_PLTT_SIZE);
gCurrentPinballGame->creatureOamPriority = 0;
gCurrentPinballGame->cameraLocked = FALSE;
}
@@ -322,7 +322,7 @@ void RunEvolutionCutscene(void)
{
gCurrentPinballGame->activePortraitType = 16;
DmaCopy16(3, gBoardActionTilesGfx, (void *)0x06015800, 0x2400);
DmaCopy16(3, gBoardActionObj_Pals, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gBoardActionObj_Pals, OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
gMain.fieldSpriteGroups[FIELD_SG_EVOLUTION_TEXT_LARGE_BOTTOM]->active = TRUE;
gMain.fieldSpriteGroups[FIELD_SG_EVOLUTION_TEXT_LARGE_TOP]->active = TRUE;
gMain.fieldSpriteGroups[FIELD_SG_EVOLUTION_TEXT_MEDIUM_LOWER]->active = TRUE;
@@ -345,7 +345,7 @@ void RunEvolutionCutscene(void)
gBG0TilemapBuffer[(i + 15) * 0x20 + j] = 0xC100;
}
DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800);
DmaCopy16(3, gBG0TilemapBuffer, BG_CHAR_SCREEN_ADDR(0,4), BG_SCREEN_SIZE);
if (var0 == 30)
m4aSongNumStart(MUS_EVOLUTION);
@@ -360,7 +360,7 @@ void RunEvolutionCutscene(void)
gBG0TilemapBuffer[(i + 15) * 32 + j] = 0xC100;
}
DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800);
DmaCopy16(3, gBG0TilemapBuffer, BG_CHAR_SCREEN_ADDR(0,4), BG_SCREEN_SIZE);
}
}
@@ -369,7 +369,7 @@ void RunEvolutionCutscene(void)
var0 = gCurrentPinballGame->stageTimer - 270;
if (var0 == 0)
{
for (i = 0; i < 16; i++)
for (i = 0; i < COLORS_PER_PALETTE; i++)
{
gPaletteFadeRGBCache[i][0] = RGB5_GET_R(gCurrentPinballGame->pauseObjPalette[13][i]);
gPaletteFadeRGBCache[i][1] = RGB5_GET_G(gCurrentPinballGame->pauseObjPalette[13][i]);
@@ -379,16 +379,16 @@ void RunEvolutionCutscene(void)
else
{
u16 *destColor;
for (i = 0; i < 16; i++)
for (i = 0; i < COLORS_PER_PALETTE; i++)
{
destColor = sp1B0;
sp210[0] = gPaletteFadeRGBCache[i][0] + ((0x1F - gPaletteFadeRGBCache[i][0]) * var0) / 30;
sp210[1] = gPaletteFadeRGBCache[i][1] + ((0x1F - gPaletteFadeRGBCache[i][1]) * var0) / 30;
sp210[2] = gPaletteFadeRGBCache[i][2] + ((0x1F - gPaletteFadeRGBCache[i][2]) * var0) / 30;
destColor[i] = RGB5_R(sp210[0]) | RGB5_G(sp210[1]) | RGB5_B(sp210[2]);
sp210[0] = gPaletteFadeRGBCache[i][0] + ((31 - gPaletteFadeRGBCache[i][0]) * var0) / 30;
sp210[1] = gPaletteFadeRGBCache[i][1] + ((31 - gPaletteFadeRGBCache[i][1]) * var0) / 30;
sp210[2] = gPaletteFadeRGBCache[i][2] + ((31 - gPaletteFadeRGBCache[i][2]) * var0) / 30;
destColor[i] = RGB5(sp210[0], sp210[1], sp210[2]);
}
DmaCopy16(3, destColor, (void *)0x050003A0, 0x20);
DmaCopy16(3, destColor, OBJ_PLTT_SLOT(PAL_IX_CATCH_MON), PLTT_SLOT_SIZE);
}
if (var0 == 10)
@@ -613,7 +613,7 @@ void RunEvolutionCutscene(void)
for (i = 0x1E0; i < 0x340; i++)
gBG0TilemapBuffer[i] = 0x1FF;
DmaCopy16(3, gBG0TilemapBuffer, (void *)0x06002000, 0x800);
DmaCopy16(3, gBG0TilemapBuffer, BG_CHAR_SCREEN_ADDR(0,4), BG_SCREEN_SIZE);
if (gMain.selectedField == FIELD_SAPPHIRE)
gCurrentPinballGame->sapphireBumperTimer = 0;
}
@@ -630,7 +630,7 @@ void RunEvolutionCutscene(void)
LoadPortraitGraphics(PORTRAIT_STATE_POKEMON_DISPLAY, PORTRAIT_MAIN_SLOT);
gCurrentPinballGame->activePortraitType = 17;
DmaCopy16(3, gCatchTile_BurstStage4_Gfx, (void *)0x06015800, 0x1800);
DmaCopy16(3, gCatchTile_BurstStage4_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchTile_BurstStage4_Pal, OBJ_PLTT_SLOT(PAL_IX_CATCH_TILE_FX), PLTT_SLOT_SIZE);
gCurrentPinballGame->creatureOamPriority = 3;
}
}
@@ -674,7 +674,7 @@ void RunEvolutionCutscene(void)
gCurrentPinballGame->revealFramesetIndex = 10;
gCurrentPinballGame->stageTimer = 0;
gCurrentPinballGame->boardSubState++;
DmaCopy16(3, gCurrentPinballGame->pauseObjPalette, (void *)0x05000200, 0x180);
DmaCopy16(3, gCurrentPinballGame->pauseObjPalette, OBJ_PLTT_SLOT(PAL_IX_0), 12*PLTT_SLOT_SIZE);
gCurrentPinballGame->activePortraitType = 0;
}
}
@@ -719,13 +719,13 @@ void RunTravelEventCutscene(void)
if (gMain.selectedField == FIELD_RUBY)
{
DmaCopy16(3, gRubyTravelPaint_Gfx, (void *)0x06015800, 0x1800);
DmaCopy16(3, gRubyPainter_Pals, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gRubyPainter_Pals, OBJ_PLTT_SLOT(PAL_IX_TRAVEL_PAINTER), PLTT_SLOT_SIZE);
DmaCopy16(3, gRubyTravelVolbeat_Gfx, (void *)0x06015800, 0x480);
}
else
{
DmaCopy16(3, gSapphireTravelPaint_Gfx, (void *)0x06015800, 0x1800);
DmaCopy16(3, gSapphirePainter_Pals, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gSapphirePainter_Pals, OBJ_PLTT_SLOT(PAL_IX_TRAVEL_PAINTER), PLTT_SLOT_SIZE);
DmaCopy16(3, gSapphireTravelIllumise_Gfx, (void *)0x06015800, 0x480);
}
}

View File

@@ -11,7 +11,7 @@ extern struct SongHeader se_pikachu_kickback;
extern s16 gPikaSaverAnimFrameTable[100];
extern s16 gOutlaneCenterXPositions[3];
extern u16 gCatchOverlayAnimData[][2];
extern s16 gCatchOverlayOamData[28][12];
extern s16 gPikaKickbackFiringAnimOamFramesets[28][12];
extern const struct Vector32 gPikaSaverWaypoints[];
extern const u16 gAngleToDirectionTable[];
extern const u8 gPikachuSaverTilesGfx[];
@@ -279,9 +279,9 @@ void UpdateKickbackLogic(void)
{
oamSimple = &spriteGroup->oam[j];
dst = (u16 *)&gOamBuffer[oamSimple->oamId];
*dst++ = gCatchOverlayOamData[oamIx][j * 3 + 0];
*dst++ = gCatchOverlayOamData[oamIx][j * 3 + 1];
*dst++ = gCatchOverlayOamData[oamIx][j * 3 + 2];
*dst++ = gPikaKickbackFiringAnimOamFramesets[oamIx][j * 3 + 0];
*dst++ = gPikaKickbackFiringAnimOamFramesets[oamIx][j * 3 + 1];
*dst++ = gPikaKickbackFiringAnimOamFramesets[oamIx][j * 3 + 2];
gOamBuffer[oamSimple->oamId].x += spriteGroup->baseX;
gOamBuffer[oamSimple->oamId].y += spriteGroup->baseY;
@@ -388,7 +388,7 @@ void PichuArrivalSequence(void)
{
oamSimple = &group->oam[i];
gOamBuffer[oamSimple->oamId].priority = 1;
gOamBuffer[oamSimple->oamId].paletteNum = 3;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_3;
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY;
}

View File

@@ -24,14 +24,14 @@ extern const u8 gSpaceTileGfx[0x40];
extern const u8 gAlphabetTilesGfx[][0x40];
extern const s16 gCaughtTextChars[];
extern const struct Vector16 gFlyingCreatureCameraOffsets[];
extern const u16 gEggFloatOamFramesets[14][15];
extern const u16 gAerodactylEggDeliveryCutsceneFramesets[14][15];
extern const u8 gAerodactlyFlight_Gfx[];
extern const Palette gAerodactlyFlight_Pal;
extern const u16 gPikaSaverFrameData[][2];
extern const u16 gPokemonFloatOamFramesets[82][6][3];
extern const u16 gTotodileEggDeliveryCutsceneFramesets[82][6][3];
extern const Palette gTotodile_Pal;
extern const u8 gTotodileEggDelivery_Gfx[];
extern const u16 gShopOamAttributes[18][3];
extern const u16 gCoinRewardAnimOamFramesets[18][3];
extern const u16 gShopNumberOamFramesets[4][15];
extern const s16 gArrowBounceOffsets[];
extern const s16 gTimerIndicatorFrames[];
@@ -528,7 +528,7 @@ void UpdateRubyEvolutionShopSprite(void)
if (gCurrentPinballGame->shopAnimTimer == 0)
{
group->active = TRUE;
DmaCopy16(3, gRubyShopSign_Pal, OBJ_PLTT_SLOT(2), PLTT_SLOT_SIZE);
DmaCopy16(3, gRubyShopSign_Pal, OBJ_PLTT_SLOT(PAL_IX_RUBY_SHOP_SIGN), PLTT_SLOT_SIZE);
}
else if (gCurrentPinballGame->shopAnimTimer == 37)
{
@@ -815,7 +815,7 @@ void AnimateCoinReward(void)
oamSimple = &group->oam[i];
dst = (u16*)&gOamBuffer[oamSimple->oamId];
src = gShopOamAttributes[var0];
src = gCoinRewardAnimOamFramesets[var0];
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
@@ -857,7 +857,7 @@ void InitTotodileEggDelivery(void)
gCurrentPinballGame->portraitOffsetX = 240;
gCurrentPinballGame->portraitOffsetY = 160;
gCurrentPinballGame->activePortraitType = 3;
DmaCopy16(3, gTotodile_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gTotodile_Pal, OBJ_PLTT_SLOT(PAL_IX_RUBY_EGG_DELIVERER), PLTT_SLOT_SIZE);
DmaCopy16(3, gTotodileEggDelivery_Gfx, (void *)0x06015800, 0xCA0);
}
@@ -918,7 +918,7 @@ void AnimateTotodileEggDelivery(void)
{
oamSimple = &group->oam[i];
dst = (u16*)&gOamBuffer[oamSimple->oamId];
src = gPokemonFloatOamFramesets[var0][i];
src = gTotodileEggDeliveryCutsceneFramesets[var0][i];
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
@@ -940,7 +940,7 @@ void InitAerodactylEggDelivery(void)
gCurrentPinballGame->portraitOffsetX = gCurrentPinballGame->eggDeliveryX / 20 - gFlyingCreatureCameraOffsets[0].x;
gCurrentPinballGame->portraitOffsetY = gCurrentPinballGame->eggDeliveryY / 20 - gFlyingCreatureCameraOffsets[0].y;
gCurrentPinballGame->activePortraitType = 2;
DmaCopy16(3, gAerodactlyFlight_Pal, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gAerodactlyFlight_Pal, OBJ_PLTT_SLOT(PAL_IX_RUBY_EGG_DELIVERER), PLTT_SLOT_SIZE);
DmaCopy16(3, gAerodactlyFlight_Gfx, (void *)0x06015800, 0x1000);
}
@@ -995,9 +995,9 @@ void AnimateAerodactylEggDelivery(void)
{
oamSimple = &group->oam[i];
dst = (u16 *)&gOamBuffer[oamSimple->oamId];
*dst++ = gEggFloatOamFramesets[var0][i * 3 + 0];
*dst++ = gEggFloatOamFramesets[var0][i * 3 + 1];
*dst++ = gEggFloatOamFramesets[var0][i * 3 + 2];
*dst++ = gAerodactylEggDeliveryCutsceneFramesets[var0][i * 3 + 0];
*dst++ = gAerodactylEggDeliveryCutsceneFramesets[var0][i * 3 + 1];
*dst++ = gAerodactylEggDeliveryCutsceneFramesets[var0][i * 3 + 2];
gOamBuffer[oamSimple->oamId].x += group->baseX;
gOamBuffer[oamSimple->oamId].y += group->baseY;
@@ -1713,7 +1713,7 @@ void UpdateEggMode(void)
group->baseX = gCurrentPinballGame->walkMonXPos / 10 - gCurrentPinballGame->cameraXOffset;
group->baseY = gCurrentPinballGame->walkMonYPos / 10 - gCurrentPinballGame->cameraYOffset;
DmaCopy16(3, gCatchSpriteFrameBuffer[var0], (void *)0x060112A0, 0x120);
DmaCopy16(3, gCatchSpritePaletteBuffer, (void *)0x050003A0, 0x20);
DmaCopy16(3, gCatchSpritePaletteBuffer, OBJ_PLTT_SLOT(PAL_IX_CATCH_MON), PLTT_SLOT_SIZE);
for (i = 0; i < 4; i++)
{
oamSimple = &group->oam[i];
@@ -1934,7 +1934,7 @@ void UpdateEggMode(void)
break;
case EGG_HATCH_SUBSTATE_SETUP_CATCH_ANIMATION:
gCurrentPinballGame->activePortraitType = 9;
DmaCopy16(3, gCaptureHit_Pal, OBJ_PLTT_SLOT(15), PLTT_SLOT_SIZE);
DmaCopy16(3, gCaptureHit_Pal, OBJ_PLTT_SLOT(PAL_IX_MON_SHADOW_PORTRAIT), PLTT_SLOT_SIZE);
DmaCopy16(3, gCaptureScreenTilesGfx, (void *)0x06015800, 0x1C00);
DmaCopy16(3, &gCaptureBallTilesGfx[gCurrentPinballGame->ballUpgradeType * 0x200], (void *)0x060164C0, 0x80);
DmaCopy16(3, &gCaptureBallTilesGfx[(gCurrentPinballGame->ballUpgradeType * 8 + 4) * 0x40], (void *)0x06016760, 0x80);
@@ -1943,7 +1943,7 @@ void UpdateEggMode(void)
gCurrentPinballGame->catchTargetX = gCurrentPinballGame->walkMonXPos / 10 + 8;
gCurrentPinballGame->catchTargetY = gCurrentPinballGame->walkMonYPos / 10 - 31;
for (i = 0; i < 6; i++)
gCurrentPinballGame->catchTilePalette[i] = 13;
gCurrentPinballGame->catchTilePalette[i] = PAL_IX_MON_PORTRAIT;
gCurrentPinballGame->boardSubState++;
group->baseX = gCurrentPinballGame->walkMonXPos / 10 - gCurrentPinballGame->cameraXOffset;

View File

@@ -42,7 +42,7 @@ void InitTravelMode(void)
gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + TRAVEL_MODE_TIME;
gCurrentPinballGame->timerBonus = 0;
gCurrentPinballGame->saverTimeRemaining = TRAVEL_MODE_SAVER_TIME;
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(12), PLTT_SLOT_SIZE);
DmaCopy16(3, gTimer_Default_Pal, BG_PLTT_SLOT(PAL_IX_HUD), PLTT_SLOT_SIZE);
}
void UpdateTravelMode(void)

View File

@@ -109,7 +109,7 @@ void Options_LoadGraphics(void)
DmaCopy16(3, gBG0TilemapBuffer, BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gOptionsBackground_Tilemap, BG_SCREEN_ADDR(1), BG_SCREEN_SIZE);
DmaCopy16(3, gGBAButtonIcons_Pals, OBJ_PLTT_SLOT(0), 3*PLTT_SLOT_SIZE);
DmaCopy16(3, gGBAButtonIcons_Pals, OBJ_PLTT_SLOT(PAL_IX_0), 3*PLTT_SLOT_SIZE);
DmaCopy16(3, gOptionsSprites_Gfx, OBJ_VRAM0, 0x2020);
Options_InitStates();
UpdateOptionsSpritePositions();

View File

@@ -128,14 +128,14 @@ void LoadPokedexGraphics(void)
gMain.dispcntBackup = REG_DISPCNT;
DmaCopy16(3, gPokedexBgText_Gfx, (void *)BG_CHAR_ADDR(1), 0x4400);
DmaCopy16(3, gPokedexBg_Gfx, (void *)BG_CHAR_ADDR(3), 0x1400);
DmaCopy16(3, gPokedexBgText_Gfx, BG_CHAR_ADDR(1), 0x4400);
DmaCopy16(3, gPokedexBg_Gfx, BG_CHAR_ADDR(3), 0x1400);
DmaCopy16(3, gPokedexBackground_Pals, BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gPokedexBg1_Tilemap, gBG0TilemapBuffer, BG_SCREEN_SIZE);
DmaCopy16(3, gPokedexBg2_Tilemap, gPokedexVramBuffer, BG_SCREEN_SIZE);
DmaCopy16(3, gPokedexBg3_Tilemap, (void *)BG_SCREEN_ADDR(2), BG_SCREEN_SIZE);
DmaCopy16(3, gPokedexBg3_Tilemap, BG_SCREEN_ADDR(2), BG_SCREEN_SIZE);
DmaCopy16(3, gPokedexSprites_Pals, OBJ_PLTT, OBJ_PLTT_SIZE);
DmaCopy16(3, gPokedexSprites_Gfx, (void *)OBJ_VRAM0, 0x6C20);
DmaCopy16(3, gPokedexSprites_Gfx, OBJ_VRAM0, 0x6C20);
InitPokedexState();
PrintSeenOwnedTotals(gPokedexNumSeen, gPokedexNumOwned);
@@ -148,8 +148,8 @@ void LoadPokedexGraphics(void)
gPokedexVramBuffer[0x134] = 0x59;
DmaCopy16(3, gBG0TilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gPokedexVramBuffer, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE);
DmaCopy16(3, gBG0TilemapBuffer, BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gPokedexVramBuffer,BG_SCREEN_ADDR(1), BG_SCREEN_SIZE);
RenderPokedexSprites();
EnableVBlankInterrupts();
@@ -274,7 +274,7 @@ void Pokedex_HandleListInput(void)
if (gPokedexFlags[gPokedexSelectedMon] >= 2)
{
gPokedexShowButtonPrompt = FALSE;
DmaCopy16(3, 0x6000280, (void *)gPokedexInfoWindowBackupTiles, 0x200);
DmaCopy16(3, 0x6000280, gPokedexInfoWindowBackupTiles, 0x200);
gMain.subState = POKEDEX_STATE_3;
}
else
@@ -330,7 +330,7 @@ void Pokedex_HandleListInput(void)
if (gPokedexFlags[gPokedexSelectedMon] >= SPECIES_SHARED)
{
gPokedexShowButtonPrompt = FALSE;
DmaCopy16(3, 0x6000280, (void *)gPokedexInfoWindowBackupTiles, 0x200);
DmaCopy16(3, 0x6000280, gPokedexInfoWindowBackupTiles, 0x200);
gMain.subState = POKEDEX_STATE_3;
}
else
@@ -360,7 +360,7 @@ void Pokedex_HandleListInput(void)
gPokedexScrollWaitFrames--;
RenderPokedexSprites();
DmaCopy16(3, gBG0TilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gBG0TilemapBuffer, BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
}
void Pokedex_PostScrollRefresh(void)
@@ -372,7 +372,7 @@ void Pokedex_PostScrollRefresh(void)
gPokedexScrollWaitFrames--;
RenderPokedexSprites();
DmaCopy16(3, gBG0TilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gBG0TilemapBuffer, BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
gMain.subState = POKEDEX_STATE_HANDLE_LIST_INPUT;
}
@@ -389,8 +389,8 @@ void Pokedex_InfoWindowSlideIn(void)
gPokedexInfoWindowSlideStep++;
gPokedexVramBuffer[0x134] = 0x59;
DmaCopy16(3, gBG0TilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gPokedexVramBuffer, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE);
DmaCopy16(3, gBG0TilemapBuffer, BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gPokedexVramBuffer, BG_SCREEN_ADDR(1), BG_SCREEN_SIZE);
if (gPokedexInfoWindowSlideStep > 7)
{
@@ -562,8 +562,8 @@ void Pokedex_InfoWindowSlideOut(void)
gPokedexInfoWindowSlideStep++;
gPokedexVramBuffer[0x134] = 0x59;
DmaCopy16(3, gPokedexVramBuffer, (void *)BG_SCREEN_ADDR(1), BG_SCREEN_SIZE);
DmaCopy16(3, gBG0TilemapBuffer, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gPokedexVramBuffer, BG_SCREEN_ADDR(1), BG_SCREEN_SIZE);
DmaCopy16(3, gBG0TilemapBuffer, BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
if (gPokedexInfoWindowSlideStep > 8)
{
@@ -571,7 +571,7 @@ void Pokedex_InfoWindowSlideOut(void)
gPokedexShowAnimSprite = FALSE;
gPokedexShowButtonPrompt = TRUE;
DmaFill16(3, 0, (void *)gTempGfxBuffer, 0x1800);
DmaFill16(3, 0, gTempGfxBuffer, 0x1800);
DmaFill16(3, 0, (void *)0x6005C00, 0x1800);
gMain.subState = POKEDEX_STATE_HANDLE_LIST_INPUT;
}
@@ -1893,16 +1893,16 @@ void PrintDexNumbersFromListPosition(s16 listPosition)
var0 += var2;
}
CopyBgTilesRect(gTempGfxBuffer, (void *)0x06000000 + gPokedexListNameVramOffsets[i], 8, 2);
CopyBgTilesRect(gTempGfxBuffer, (void*)VRAM + gPokedexListNameVramOffsets[i], 8, 2);
DmaFill16(3, 0, gTempGfxBuffer, 0x800);
var0 = 0;
}
else
{
for (j = 0; j < 7; j++)
CopyBgTilesRect((void *)&gPokedexTextGlyphs_Gfx[ENGLISH_GLYPHS_START], (void *)0x06000000 + gPokedexListNameVramOffsets[i] + j * 0x20, 1, 2);
CopyBgTilesRect((void *)&gPokedexTextGlyphs_Gfx[ENGLISH_GLYPHS_START], (void*)VRAM + gPokedexListNameVramOffsets[i] + j * 0x20, 1, 2);
CopyBgTilesRect((void *)gPokedexTextGlyphs_Gfx, (void *)0x06000000 + gPokedexListNameVramOffsets[i] + j * 0x20, 1, 2);
CopyBgTilesRect((void *)gPokedexTextGlyphs_Gfx, (void*)VRAM + gPokedexListNameVramOffsets[i] + j * 0x20, 1, 2);
}
}
}
@@ -1928,20 +1928,20 @@ void LoadMonPortrait(s16 species)
{
case SPECIES_UNSEEN:
CopyBgTilesRect(gPokedexSprites_Gfx + 0x5C00, (void *)0x06013400, 24, 1);
DmaCopy16(3, gPokedexSprites_Pals, OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gPokedexSprites_Pals, OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
break;
case SPECIES_SEEN:
CopyBgTilesRect(gMonPortraitGroupGfx[var1] + var2 * 0x300, (void *)0x06013400, 24, 1);
DmaCopy16(3, gMonPortraitGroupPals[0][15], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gMonPortraitGroupPals[0][15], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
break;
case SPECIES_SHARED:
case SPECIES_SHARED_AND_SEEN:
CopyBgTilesRect(gMonPortraitGroupGfx[var1] + var2 * 0x300, (void *)0x06013400, 24, 1);
DarkenPalette(&gMonPortraitGroupPals[var1][var2], (void*)OBJ_PLTT_SLOT(1), 0x20, 0xE);
DarkenPalette(&gMonPortraitGroupPals[var1][var2], OBJ_PLTT_SLOT(PAL_IX_BALL), 0x20, 0xE);
break;
case SPECIES_CAUGHT:
CopyBgTilesRect(gMonPortraitGroupGfx[var1] + var2 * 0x300, (void *)0x06013400, 24, 1);
DmaCopy16(3, gMonPortraitGroupPals[var1][var2], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gMonPortraitGroupPals[var1][var2], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
break;
}
}
@@ -2410,7 +2410,7 @@ void LoadMonAnimationSprite(s16 species)
remainder = var0 % 5;
CopyBgTilesRect(gCatchSpriteGfxPtrs[quotient] + remainder * 0xD80, (void *)(OBJ_VRAM0 + 0x3800), 108, 1);
DmaCopy16(3, gCatchMonPaletteGroups[quotient][remainder], OBJ_PLTT_SLOT(2), PLTT_SLOT_SIZE);
DmaCopy16(3, gCatchMonPaletteGroups[quotient][remainder], OBJ_PLTT_SLOT(PAL_IX_2), PLTT_SLOT_SIZE);
}
else
{
@@ -2419,7 +2419,7 @@ void LoadMonAnimationSprite(s16 species)
remainder = (var0 - 100) % 6;
CopyBgTilesRect(gMonHatchSpriteGroupGfx[quotient][remainder], (void *)(OBJ_VRAM0 + 0x4800), 135, 1);
DmaCopy16(3, gMonHatchSpriteGroupPals[quotient][remainder], OBJ_PLTT_SLOT(3), PLTT_SLOT_SIZE);
DmaCopy16(3, gMonHatchSpriteGroupPals[quotient][remainder], OBJ_PLTT_SLOT(PAL_IX_3), PLTT_SLOT_SIZE);
}
}

View File

@@ -132,7 +132,7 @@ void RayquazaBoardProcess_3A_3E79C(void)
DmaCopy16(3, gRayquazaSpriteSheet, (void *)0x06011620, 0x860);
UpdateRayquazaEntityLogic();
RenderRayquazaSprites();
DmaCopy16(3, gBonusStageObjPal, OBJ_PLTT_SLOT(9), 0x20);
DmaCopy16(3, gBonusStageObjPal, OBJ_PLTT_SLOT(PAL_IX_9), PLTT_SLOT_SIZE);
}
void RayquazaBoardProcess_3B_3EB2C(void)
@@ -705,7 +705,7 @@ void UpdateRayquazaEntityLogic(void)
void RenderRayquazaSprites(void)
{
s16 i;
s16 sp0;
s16 palFlashIx;
s16 varSL;
s32 temp;
struct SpriteGroup *group;
@@ -717,7 +717,7 @@ void RenderRayquazaSprites(void)
s8 y;
varSL = 0;
sp0 = 0;
palFlashIx = PAL_IX_0;
group = &gMain.spriteGroups[SG_RAYQUAZA_ENTITY_BACKGROUND_FLY_DOWN];
if (group->active)
{
@@ -796,28 +796,28 @@ void RenderRayquazaSprites(void)
var1 = gRayquazaAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][0];
if (gCurrentPinballGame->legendaryFlashState > 9)
{
sp0 = 11;
palFlashIx = PAL_IX_11;
oamSimple = &group->oam[0];
gOamBuffer[oamSimple->oamId].x = 240;
gOamBuffer[oamSimple->oamId].y = 180;
gOamBuffer[oamSimple->oamId].paletteNum = sp0;
gOamBuffer[oamSimple->oamId].paletteNum = palFlashIx;
}
else
{
if (gCurrentPinballGame->legendaryFlashState == 1)
{
varSL = 2;
sp0 = 14;
palFlashIx = PAL_IX_14;
}
else if (gCurrentPinballGame->legendaryFlashState == 3)
{
varSL = 2;
sp0 = 11;
palFlashIx = PAL_IX_11;
}
else
{
varSL = gCurrentPinballGame->bossVulnerable;
sp0 = 15;
palFlashIx = PAL_IX_15;
}
if (gCurrentPinballGame->captureSequenceTimer == 21)
@@ -838,9 +838,9 @@ void RenderRayquazaSprites(void)
gOamBuffer[oamSimple->oamId].x += group->baseX;
gOamBuffer[oamSimple->oamId].y += group->baseY;
if (gCurrentPinballGame->legendaryFlashState < 2)
gOamBuffer[oamSimple->oamId].paletteNum = sp0;
gOamBuffer[oamSimple->oamId].paletteNum = palFlashIx;
else
sp0 = gOamBuffer[oamSimple->oamId].paletteNum;
palFlashIx = gOamBuffer[oamSimple->oamId].paletteNum;
}
gCurrentPinballGame->bossVulnerable = gRayquazaAnimFramesetTable[gCurrentPinballGame->bossFramesetIndex][2];
@@ -874,7 +874,7 @@ void RenderRayquazaSprites(void)
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY;
gOamBuffer[oamSimple->oamId].tileNum = varSL * 12 + i * 8 + 0x109;
gOamBuffer[oamSimple->oamId].paletteNum = sp0;
gOamBuffer[oamSimple->oamId].paletteNum = palFlashIx;
}
}
@@ -973,7 +973,7 @@ void UpdateRayquazaMinionsAndEffects(void)
for (j = 0; j < 6; j++)
{
oamSimple = &group->oam[j];
gOamBuffer[oamSimple->oamId].paletteNum = 13;
gOamBuffer[oamSimple->oamId].paletteNum = PAL_IX_MON_PORTRAIT;
gOamBuffer[oamSimple->oamId].priority = gCurrentPinballGame->creatureOamPriority;
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY;

View File

@@ -377,7 +377,7 @@ void AnimateRubyBallPowerUpSequence(void)
gCurrentPinballGame->ballUpgradeType++;
gCurrentPinballGame->ballUpgradeTimer = TICKS_FOR_TIME(1,0);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
}
if (gCurrentPinballGame->gBallUpgradeFxTimer == 40)

View File

@@ -252,7 +252,7 @@ void DrawWhiscash(void)
if (group->active)
{
frameIx = frameData[0];
DmaCopy16(3, gWhiscash_Pals[3*gCurrentPinballGame->activePaletteIndex], OBJ_PLTT_SLOT(9), PLTT_SLOT_SIZE);
DmaCopy16(3, gWhiscash_Pals[3*gCurrentPinballGame->paletteDimmingIx], OBJ_PLTT_SLOT(PAL_IX_RUBY_BUMPERS), PLTT_SLOT_SIZE);
DmaCopy16(3, gWhiscash_Gfx[frameIx], (void *)0x06014680, 0x460);
gCurrentPinballGame->rubyBumperCollisionPosition[0].x = -248;
gCurrentPinballGame->rubyBumperCollisionPosition[0].y = -316;
@@ -762,7 +762,7 @@ void RubyPondTriBumperHandleHitAndDraw(void)
gCurrentPinballGame->bannerSlideTimer = 50;
gCurrentPinballGame->bannerSlideVelocity = 0;
DmaCopy16(3, gModeBannerTilemaps[6], (void *)0x06015800, 0x2400);
DmaCopy16(3, gModeBanner_Pals[6], OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gModeBanner_Pals[6], OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
}
else
{
@@ -780,7 +780,7 @@ void RubyPondTriBumperHandleHitAndDraw(void)
gCurrentPinballGame->bannerSlideTimer = 50;
gCurrentPinballGame->bannerSlideVelocity = 0;
DmaCopy16(3, gModeBannerTilemaps[1], (void *)0x06015800, 0x2400);
DmaCopy16(3, gModeBanner_Pals[1], OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gModeBanner_Pals[1], OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
}
gMain.blendControl = 0xCE;
@@ -823,7 +823,7 @@ void RubyPondTriBumperHandleHitAndDraw(void)
DmaCopy16(3, gLotadBumper_Gfx[var0], (void *)0x06012E80 + i * 0x100, 0x100);
}
DmaCopy16(3, gLotadBumper_Pals[3*gCurrentPinballGame->activePaletteIndex], OBJ_PLTT_SLOT(9), PLTT_SLOT_SIZE);
DmaCopy16(3, gLotadBumper_Pals[3*gCurrentPinballGame->paletteDimmingIx], OBJ_PLTT_SLOT(PAL_IX_RUBY_BUMPERS), PLTT_SLOT_SIZE);
}
else // chinchou
{
@@ -851,7 +851,7 @@ void RubyPondTriBumperHandleHitAndDraw(void)
DmaCopy16(3, gChinchouBumper_Gfx[var0], (void *)0x06012E80 + i * 0x100, 0x100);
}
DmaCopy16(3, gChinchouBumper_Pals[3*gCurrentPinballGame->activePaletteIndex], OBJ_PLTT_SLOT(9), PLTT_SLOT_SIZE);
DmaCopy16(3, gChinchouBumper_Pals[3*gCurrentPinballGame->paletteDimmingIx], OBJ_PLTT_SLOT(PAL_IX_RUBY_BUMPERS), PLTT_SLOT_SIZE);
}
// Draw Bumpers: Lotad/chinchou

View File

@@ -481,7 +481,7 @@ void DrawRubySideBumperSprites(void)
gCurrentPinballGame->bannerSlideTimer = 50;
gCurrentPinballGame->bannerSlideVelocity = 0;
DmaCopy16(3, gModeBannerTilemaps[4], (void *)0x06015800, 0x2400);
DmaCopy16(3, gModeBanner_Pals[4], OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gModeBanner_Pals[4], OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
gMain.blendControl = 0xCE;
}
}

View File

@@ -339,7 +339,7 @@ void UpdateSapphireSeedotCollection(void)
gCurrentPinballGame->bannerSlideTimer = 50;
gCurrentPinballGame->bannerSlideVelocity = 0;
DmaCopy16(3, gModeBannerTilemaps[4], (void *)0x06015800, 0x2400);
DmaCopy16(3, gModeBanner_Pals[4], OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gModeBanner_Pals[4], OBJ_PLTT_SLOT(PAL_IX_BANNER), PLTT_SLOT_SIZE);
gMain.blendControl = 0xCE;
}
}
@@ -550,8 +550,8 @@ void DrawSapphireShopSignSprite(void)
{
group->baseX = 16 - gCurrentPinballGame->cameraXOffset;
group->baseY = 115 - gCurrentPinballGame->cameraYOffset;
index = gCurrentPinballGame->shopSignPaletteIndex + gCurrentPinballGame->activePaletteIndex * 3;
DmaCopy16(3, gSapphireShopSign_Pals[index], OBJ_PLTT_SLOT(8), PLTT_SLOT_SIZE);
index = gCurrentPinballGame->shopSignPaletteIndex + gCurrentPinballGame->paletteDimmingIx * 3;
DmaCopy16(3, gSapphireShopSign_Pals[index], OBJ_PLTT_SLOT(PAL_IX_SAPPHIRE_MART_SIGN), PLTT_SLOT_SIZE);
DmaCopy16(3, gSapphireShopSignTileGfx[gCurrentPinballGame->shopSignFrame], (void *) 0x06014B20, 0x480);
for (i = 0; i < 2; i++)
{

View File

@@ -94,8 +94,8 @@ void SaveGameStateSnapshot(s16 arg0)
for (i = 0; i < 100; i++)
gCurrentPinballGame->savedSpriteAvailability[gMain.isBonusField][i] = gMain.spriteGroups[i].active;
DmaCopy16(3, (void *)OBJ_PLTT, gCurrentPinballGame->savedObjPalette[gMain.isBonusField], OBJ_PLTT_SIZE);
DmaCopy16(3, (void *)BG_PLTT, gCurrentPinballGame->savedBgPalette[gMain.isBonusField], BG_PLTT_SIZE);
DmaCopy16(3, OBJ_PLTT, gCurrentPinballGame->savedObjPalette[gMain.isBonusField], OBJ_PLTT_SIZE);
DmaCopy16(3, BG_PLTT, gCurrentPinballGame->savedBgPalette[gMain.isBonusField], BG_PLTT_SIZE);
if (!arg0)
return;
@@ -252,9 +252,9 @@ void RestoreGameState(u16 arg0)
DmaCopy16(3, gBG0TilemapBuffer, BG_CHAR_SCREEN_ADDR(0,4), BG_SCREEN_SIZE);
}
DmaCopy16(3, gCurrentPinballGame->savedObjPalette[gMain.isBonusField], (void *)OBJ_PLTT, OBJ_PLTT_SIZE);
DmaCopy16(3, gCurrentPinballGame->savedBgPalette[gMain.isBonusField], (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gCurrentPinballGame->savedObjPalette[gMain.isBonusField], OBJ_PLTT, OBJ_PLTT_SIZE);
DmaCopy16(3, gCurrentPinballGame->savedBgPalette[gMain.isBonusField], BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
RestoreFieldSpecificGraphics();
switch (gMain.selectedField)
{
@@ -456,12 +456,12 @@ void RestoreFieldSpecificGraphics(void)
if (gMain.selectedField == FIELD_RUBY)
{
DmaCopy16(3, gRubyTravelPaint_Gfx, (void *)0x6015800, 0x1800);
DmaCopy16(3, gRubyPainter_Pals, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gRubyPainter_Pals, OBJ_PLTT_SLOT(PAL_IX_TRAVEL_PAINTER), PLTT_SLOT_SIZE);
}
else
{
DmaCopy16(3, gSapphireTravelPaint_Gfx, (void *)0x6015800, 0x1800);
DmaCopy16(3, gSapphirePainter_Pals, OBJ_PLTT_SLOT(14), PLTT_SLOT_SIZE);
DmaCopy16(3, gSapphirePainter_Pals, OBJ_PLTT_SLOT(PAL_IX_TRAVEL_PAINTER), PLTT_SLOT_SIZE);
}
break;
case 21:
@@ -512,23 +512,23 @@ void RestoreMainFieldDynamicGraphics(void)
if (gMain_saveData.pokedexFlags[gCurrentPinballGame->evoTargetSpecies] == 0)
{
gCurrentPinballGame->portraitGfxIndex[i] = 205;
DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[i] / 15][gCurrentPinballGame->portraitGfxIndex[i] % 15], OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[i] / 15][gCurrentPinballGame->portraitGfxIndex[i] % 15], OBJ_PLTT_SLOT(PAL_IX_MON_PORTRAIT), PLTT_SLOT_SIZE);
}
else if (gMain_saveData.pokedexFlags[gCurrentPinballGame->evoTargetSpecies] <= 3)
{
gCurrentPinballGame->portraitGfxIndex[i] = gCurrentPinballGame->evoTargetSpecies;
DmaCopy16(3, gMonPortraitGroupPals[0][15], OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gMonPortraitGroupPals[0][15], OBJ_PLTT_SLOT(PAL_IX_MON_PORTRAIT), PLTT_SLOT_SIZE);
}
else
{
gCurrentPinballGame->portraitGfxIndex[i] = gCurrentPinballGame->evoTargetSpecies;
DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[i] / 15][gCurrentPinballGame->portraitGfxIndex[i] % 15], OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[i] / 15][gCurrentPinballGame->portraitGfxIndex[i] % 15], OBJ_PLTT_SLOT(PAL_IX_MON_PORTRAIT), PLTT_SLOT_SIZE);
}
}
else
{
gCurrentPinballGame->portraitGfxIndex[i] = gCurrentPinballGame->currentSpecies;
DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[i] / 15][gCurrentPinballGame->portraitGfxIndex[i] % 15], OBJ_PLTT_SLOT(13), PLTT_SLOT_SIZE);
DmaCopy16(3, gMonPortraitGroupPals[gCurrentPinballGame->portraitGfxIndex[i] / 15][gCurrentPinballGame->portraitGfxIndex[i] % 15], OBJ_PLTT_SLOT(PAL_IX_LOCATION_PORTRAIT), PLTT_SLOT_SIZE);
}
case 3:
DmaCopy16(3, gMonPortraitGroupGfx[gCurrentPinballGame->portraitGfxIndex[i] / 15] + (gCurrentPinballGame->portraitGfxIndex[i] % 15) * 0x300, 0x06010CA0 + (i * 0x18), 0x300);

View File

@@ -128,22 +128,22 @@ void SphealBoardProcess_3A_42E48(void)
for (i = 0; i < 0x800; i++)
gBG0TilemapBuffer[0x400 + i] = 0x200;
DmaCopy16(3, &gBG0TilemapBuffer[0x400], (void *)0x06001000, 0x1000);
DmaCopy16(3, &gBG0TilemapBuffer[0x400], BG_CHAR_SCREEN_ADDR(0,2), 2*BG_SCREEN_SIZE);
gMain.blendControl = 0x1C42;
gMain.blendAlpha = 0xC04;
for (i = 0; i < 0x140; i++)
{
u16 var0 = i - ((i / 0x20) * 0x20) - 2;
u16 var0 = i % 32 - 2;
if (var0 < 28)
gBG0TilemapBuffer[0x800 + i] = 0x9000;
}
gMain.bgOffsets[1].yOffset = 126;
DmaCopy16(3, &gBG0TilemapBuffer[0x800], (void *)0x06001140, 0x280);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(1), PLTT_SLOT_SIZE);
DmaCopy16(3, gBall_Pals[gCurrentPinballGame->ballUpgradeType], OBJ_PLTT_SLOT(PAL_IX_BALL), PLTT_SLOT_SIZE);
m4aSongNumStart(MUS_BONUS_FIELD_SPHEAL);
DmaCopy16(3, gBonusStageObjPal, OBJ_PLTT_SLOT(9), 0x20);
DmaCopy16(3, gBonusStageObjPal, OBJ_PLTT_SLOT(PAL_IX_9), PLTT_SLOT_SIZE);
}
void SphealBoardProcess_3B_43228(void)
@@ -1472,7 +1472,7 @@ void AnimateSphealBackground(void)
for (i = 0x100; i < 0x400; i++)
gBG0TilemapBuffer[0x800 + i] = gSphealWaterBackgroundTilemap[i] + var0 * 4;
DmaCopy16(3, &gBG0TilemapBuffer[0x800], (void *)0x06000000, 0x800);
DmaCopy16(3, &gBG0TilemapBuffer[0x800], BG_CHAR_SCREEN_ADDR(0,0), BG_SCREEN_SIZE);
}
void UpdateSphealResultsScreen(void)

View File

@@ -54,23 +54,23 @@ void LoadTitlescreenGraphics(void)
REG_DISPCNT |= DISPCNT_BG1_ON;
gMain.dispcntBackup = REG_DISPCNT;
DmaCopy16(3, gTitlescreenBg_Gfx, (void *)BG_CHAR_ADDR(1), 0xA000);
DmaCopy16(3, gTitlescreenBg_Pals, (void *)BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gTitlescreenBgTilemap, (void *)BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
DmaCopy16(3, gTitlescreenBg_Gfx, BG_CHAR_ADDR(1), 0xA000);
DmaCopy16(3, gTitlescreenBg_Pals, BG_PLTT, BG_PLTT_SIZE);
DmaCopy16(3, gTitlescreenBgTilemap, BG_SCREEN_ADDR(0), BG_SCREEN_SIZE);
SaveFile_ReadSavedGamePresent();
if (gMain.hasSavedGame == TRUE)
{
DmaCopy16(3, gTitlescreenSprites_Pals, (void *)OBJ_PLTT, 0xA0);
DmaCopy16(3, gTitlescreenSpritesSavedGame_Gfx, (void *)BG_CHAR_ADDR(4), 0x7000);
DmaCopy16(3, gGBAButtonIcons_Pals, OBJ_PLTT_SLOT(5), 2*PLTT_SLOT_SIZE);
DmaCopy16(3, gTitlescreenSprites_Pals, OBJ_PLTT_SLOT(PAL_IX_0), 5*PLTT_SLOT_SIZE);
DmaCopy16(3, gTitlescreenSpritesSavedGame_Gfx, BG_CHAR_ADDR(4), 0x7000);
DmaCopy16(3, gGBAButtonIcons_Pals, OBJ_PLTT_SLOT(PAL_IX_5), 2*PLTT_SLOT_SIZE);
DmaCopy16(3, gOptionsSprites_Gfx, (void *)OBJ_VRAM0 + 0x7000, 0x400);
}
else
{
DmaCopy16(3, gTitlescreenSprites_Pals, (void *)OBJ_PLTT, 0xA0);
DmaCopy16(3, gTitlescreenSpritesNoSavedGame_Gfx, (void *)BG_CHAR_ADDR(4), 0x7000);
DmaCopy16(3, gGBAButtonIcons_Pals, OBJ_PLTT_SLOT(5), 2*PLTT_SLOT_SIZE);
DmaCopy16(3, gTitlescreenSprites_Pals, OBJ_PLTT_SLOT(PAL_IX_0), 5*PLTT_SLOT_SIZE);
DmaCopy16(3, gTitlescreenSpritesNoSavedGame_Gfx, BG_CHAR_ADDR(4), 0x7000);
DmaCopy16(3, gGBAButtonIcons_Pals, OBJ_PLTT_SLOT(PAL_IX_5), 2*PLTT_SLOT_SIZE);
DmaCopy16(3, gOptionsSprites_Gfx, (void *)OBJ_VRAM0 + 0x7000, 0x400);
}

View File

@@ -117,9 +117,9 @@ void ResetDisplayState(void)
void ClearGraphicsMemory(void)
{
DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
DmaFill16(3, 0, (void *)PLTT, BG_PLTT_SIZE + OBJ_PLTT_SIZE);
DmaFill16(3, 0, VRAM, VRAM_SIZE);
DmaFill32(3, 0, OAM, OAM_SIZE);
DmaFill16(3, 0, PLTT, BG_PLTT_SIZE + OBJ_PLTT_SIZE);
REG_BG0HOFS = 0;
REG_BG0VOFS = 0;
REG_BG1HOFS = 0;
@@ -178,7 +178,7 @@ void ClearSprites(void)
gOamBuffer[i].size = 0;
gOamBuffer[i].tileNum = 0;
gOamBuffer[i].priority = 0;
gOamBuffer[i].paletteNum = 0;
gOamBuffer[i].paletteNum = PAL_IX_0;
gOamBuffer[i].affineParam = 0;
}
}