|
After Width: | Height: | Size: 546 B |
|
Before Width: | Height: | Size: 138 B After Width: | Height: | Size: 138 B |
|
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 380 B |
|
Before Width: | Height: | Size: 351 B After Width: | Height: | Size: 351 B |
|
Before Width: | Height: | Size: 216 B After Width: | Height: | Size: 216 B |
@@ -0,0 +1,19 @@
|
|||||||
|
JASC-PAL
|
||||||
|
0100
|
||||||
|
16
|
||||||
|
0 0 0
|
||||||
|
0 0 0
|
||||||
|
0 0 32
|
||||||
|
0 0 74
|
||||||
|
0 0 115
|
||||||
|
24 24 123
|
||||||
|
49 49 139
|
||||||
|
82 82 156
|
||||||
|
106 106 172
|
||||||
|
139 139 189
|
||||||
|
164 164 205
|
||||||
|
197 197 222
|
||||||
|
222 222 238
|
||||||
|
255 255 255
|
||||||
|
0 0 0
|
||||||
|
0 0 0
|
||||||
|
Before Width: | Height: | Size: 333 B After Width: | Height: | Size: 333 B |
|
Before Width: | Height: | Size: 203 B After Width: | Height: | Size: 203 B |
|
Before Width: | Height: | Size: 198 B After Width: | Height: | Size: 198 B |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 872 B After Width: | Height: | Size: 872 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 649 B After Width: | Height: | Size: 649 B |
|
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 426 B After Width: | Height: | Size: 426 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 578 B After Width: | Height: | Size: 578 B |
|
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 234 B After Width: | Height: | Size: 234 B |
|
Before Width: | Height: | Size: 451 B After Width: | Height: | Size: 451 B |
|
Before Width: | Height: | Size: 554 B |
@@ -1,19 +0,0 @@
|
|||||||
JASC-PAL
|
|
||||||
0100
|
|
||||||
16
|
|
||||||
24 41 74
|
|
||||||
0 0 0
|
|
||||||
139 123 16
|
|
||||||
189 172 16
|
|
||||||
131 164 65
|
|
||||||
148 230 49
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
222 222 222
|
|
||||||
24 41 74
|
|
||||||
82 82 82
|
|
||||||
180 180 180
|
|
||||||
255 255 255
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
JASC-PAL
|
|
||||||
0100
|
|
||||||
16
|
|
||||||
255 255 255
|
|
||||||
115 197 106
|
|
||||||
41 164 8
|
|
||||||
82 180 65
|
|
||||||
139 222 131
|
|
||||||
98 197 82
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
16 139 98
|
|
||||||
16 115 98
|
|
||||||
24 90 90
|
|
||||||
32 74 90
|
|
||||||
32 65 82
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
JASC-PAL
|
|
||||||
0100
|
|
||||||
16
|
|
||||||
0 0 255
|
|
||||||
255 255 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
238 246 246
|
|
||||||
222 230 230
|
|
||||||
180 189 197
|
|
||||||
148 156 172
|
|
||||||
106 123 139
|
|
||||||
74 90 115
|
|
||||||
41 57 90
|
|
||||||
0 0 0
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
JASC-PAL
|
|
||||||
0100
|
|
||||||
16
|
|
||||||
0 0 0
|
|
||||||
131 238 115
|
|
||||||
82 189 74
|
|
||||||
57 164 57
|
|
||||||
115 213 98
|
|
||||||
16 123 16
|
|
||||||
164 255 131
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 0 255
|
|
||||||
255 148 0
|
|
||||||
164 222 98
|
|
||||||
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
@@ -1,19 +0,0 @@
|
|||||||
JASC-PAL
|
|
||||||
0100
|
|
||||||
16
|
|
||||||
0 0 0
|
|
||||||
164 238 139
|
|
||||||
57 148 57
|
|
||||||
131 213 115
|
|
||||||
156 230 156
|
|
||||||
131 205 148
|
|
||||||
106 180 131
|
|
||||||
65 139 98
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
255 0 0
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
JASC-PAL
|
|
||||||
0100
|
|
||||||
16
|
|
||||||
0 0 0
|
|
||||||
238 246 189
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
115 213 255
|
|
||||||
156 222 255
|
|
||||||
205 238 255
|
|
||||||
255 255 255
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
0 0 0
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
JASC-PAL
|
|
||||||
0100
|
|
||||||
16
|
|
||||||
197 222 205
|
|
||||||
255 255 255
|
|
||||||
222 222 222
|
|
||||||
123 123 123
|
|
||||||
156 222 255
|
|
||||||
189 230 255
|
|
||||||
222 238 255
|
|
||||||
255 255 255
|
|
||||||
255 180 123
|
|
||||||
238 98 74
|
|
||||||
205 57 32
|
|
||||||
197 131 180
|
|
||||||
164 98 148
|
|
||||||
131 65 123
|
|
||||||
90 57 90
|
|
||||||
16 16 16
|
|
||||||
@@ -537,14 +537,20 @@ graphics/misc/emoticons.4bpp: %.4bpp: %.png
|
|||||||
$(ITEMMENUGFXDIR)/bag_tiles.4bpp: %.4bpp: %.png
|
$(ITEMMENUGFXDIR)/bag_tiles.4bpp: %.4bpp: %.png
|
||||||
$(GFX) $< $@ -num_tiles 55
|
$(GFX) $< $@ -num_tiles 55
|
||||||
|
|
||||||
$(INTROGFXDIR)/unk_8402D54.4bpp: %.4bpp: %.png
|
$(INTROGFXDIR)/scene_1/grass.4bpp: %.4bpp: %.png
|
||||||
$(GFX) $< $@ -num_tiles 397
|
$(GFX) $< $@ -num_tiles 397
|
||||||
|
|
||||||
$(INTROGFXDIR)/unk_8406654.4bpp: %.4bpp: %.png
|
$(INTROGFXDIR)/scene_2/plants.4bpp: %.4bpp: %.png
|
||||||
|
$(GFX) $< $@ -num_tiles 17
|
||||||
|
|
||||||
|
$(INTROGFXDIR)/scene_2/nidorino_close.4bpp: %.4bpp: %.png
|
||||||
$(GFX) $< $@ -num_tiles 170
|
$(GFX) $< $@ -num_tiles 170
|
||||||
|
|
||||||
$(INTROGFXDIR)/unk_8405B28.4bpp: %.4bpp: %.png
|
$(INTROGFXDIR)/scene_2/gengar_close.4bpp: %.4bpp: %.png
|
||||||
$(GFX) $< $@ -num_tiles 17
|
$(GFX) $< $@ -num_tiles 114
|
||||||
|
|
||||||
|
$(INTROGFXDIR)/scene_3/gengar_anim.4bpp: %.4bpp: %.png
|
||||||
|
$(GFX) $< $@ -num_tiles 348
|
||||||
|
|
||||||
$(BATTLETERRAINGFXDIR)/building/terrain.4bpp: %.4bpp: %.png
|
$(BATTLETERRAINGFXDIR)/building/terrain.4bpp: %.4bpp: %.png
|
||||||
$(GFX) $< $@ -num_tiles 77
|
$(GFX) $< $@ -num_tiles 77
|
||||||
|
|||||||
@@ -552,6 +552,7 @@
|
|||||||
#define WININ_WIN0_BG_ALL (WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3)
|
#define WININ_WIN0_BG_ALL (WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3)
|
||||||
#define WININ_WIN0_OBJ (1 << 4)
|
#define WININ_WIN0_OBJ (1 << 4)
|
||||||
#define WININ_WIN0_CLR (1 << 5)
|
#define WININ_WIN0_CLR (1 << 5)
|
||||||
|
#define WININ_WIN0_ALL (WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR)
|
||||||
#define WININ_WIN1_BG0 (1 << 8)
|
#define WININ_WIN1_BG0 (1 << 8)
|
||||||
#define WININ_WIN1_BG1 (1 << 9)
|
#define WININ_WIN1_BG1 (1 << 9)
|
||||||
#define WININ_WIN1_BG2 (1 << 10)
|
#define WININ_WIN1_BG2 (1 << 10)
|
||||||
@@ -559,6 +560,7 @@
|
|||||||
#define WININ_WIN1_BG_ALL (WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3)
|
#define WININ_WIN1_BG_ALL (WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3)
|
||||||
#define WININ_WIN1_OBJ (1 << 12)
|
#define WININ_WIN1_OBJ (1 << 12)
|
||||||
#define WININ_WIN1_CLR (1 << 13)
|
#define WININ_WIN1_CLR (1 << 13)
|
||||||
|
#define WININ_WIN1_ALL (WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR)
|
||||||
|
|
||||||
#define WINOUT_WIN01_BG0 (1 << 0)
|
#define WINOUT_WIN01_BG0 (1 << 0)
|
||||||
#define WINOUT_WIN01_BG1 (1 << 1)
|
#define WINOUT_WIN01_BG1 (1 << 1)
|
||||||
@@ -567,6 +569,7 @@
|
|||||||
#define WINOUT_WIN01_BG_ALL (WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3)
|
#define WINOUT_WIN01_BG_ALL (WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3)
|
||||||
#define WINOUT_WIN01_OBJ (1 << 4)
|
#define WINOUT_WIN01_OBJ (1 << 4)
|
||||||
#define WINOUT_WIN01_CLR (1 << 5)
|
#define WINOUT_WIN01_CLR (1 << 5)
|
||||||
|
#define WINOUT_WIN01_ALL (WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR)
|
||||||
#define WINOUT_WINOBJ_BG0 (1 << 8)
|
#define WINOUT_WINOBJ_BG0 (1 << 8)
|
||||||
#define WINOUT_WINOBJ_BG1 (1 << 9)
|
#define WINOUT_WINOBJ_BG1 (1 << 9)
|
||||||
#define WINOUT_WINOBJ_BG2 (1 << 10)
|
#define WINOUT_WINOBJ_BG2 (1 << 10)
|
||||||
@@ -574,6 +577,7 @@
|
|||||||
#define WINOUT_WINOBJ_BG_ALL (WINOUT_WINOBJ_BG0 | WINOUT_WINOBJ_BG1 | WINOUT_WINOBJ_BG2 | WINOUT_WINOBJ_BG3)
|
#define WINOUT_WINOBJ_BG_ALL (WINOUT_WINOBJ_BG0 | WINOUT_WINOBJ_BG1 | WINOUT_WINOBJ_BG2 | WINOUT_WINOBJ_BG3)
|
||||||
#define WINOUT_WINOBJ_OBJ (1 << 12)
|
#define WINOUT_WINOBJ_OBJ (1 << 12)
|
||||||
#define WINOUT_WINOBJ_CLR (1 << 13)
|
#define WINOUT_WINOBJ_CLR (1 << 13)
|
||||||
|
#define WINOUT_WINOBJ_ALL (WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR)
|
||||||
|
|
||||||
#define WIN_RANGE(a, b) (((a) << 8) | (b))
|
#define WIN_RANGE(a, b) (((a) << 8) | (b))
|
||||||
#define WIN_RANGE2(a, b) ((b) | ((a) << 8))
|
#define WIN_RANGE2(a, b) ((b) | ((a) << 8))
|
||||||
@@ -584,8 +588,10 @@
|
|||||||
#define BLDCNT_TGT1_BG1 (1 << 1)
|
#define BLDCNT_TGT1_BG1 (1 << 1)
|
||||||
#define BLDCNT_TGT1_BG2 (1 << 2)
|
#define BLDCNT_TGT1_BG2 (1 << 2)
|
||||||
#define BLDCNT_TGT1_BG3 (1 << 3)
|
#define BLDCNT_TGT1_BG3 (1 << 3)
|
||||||
|
#define BLDCNT_TGT1_BG_ALL (BLDCNT_TGT1_BG0 | BLDCNT_TGT1_BG1 | BLDCNT_TGT1_BG2 | BLDCNT_TGT1_BG3)
|
||||||
#define BLDCNT_TGT1_OBJ (1 << 4)
|
#define BLDCNT_TGT1_OBJ (1 << 4)
|
||||||
#define BLDCNT_TGT1_BD (1 << 5)
|
#define BLDCNT_TGT1_BD (1 << 5)
|
||||||
|
#define BLDCNT_TGT1_ALL (BLDCNT_TGT1_BG_ALL | BLDCNT_TGT1_OBJ | BLDCNT_TGT1_BD)
|
||||||
// Bits 6-7 select the special effect
|
// Bits 6-7 select the special effect
|
||||||
#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect
|
#define BLDCNT_EFFECT_NONE (0 << 6) // no special effect
|
||||||
#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA)
|
#define BLDCNT_EFFECT_BLEND (1 << 6) // 1st+2nd targets mixed (controlled by BLDALPHA)
|
||||||
@@ -596,9 +602,10 @@
|
|||||||
#define BLDCNT_TGT2_BG1 (1 << 9)
|
#define BLDCNT_TGT2_BG1 (1 << 9)
|
||||||
#define BLDCNT_TGT2_BG2 (1 << 10)
|
#define BLDCNT_TGT2_BG2 (1 << 10)
|
||||||
#define BLDCNT_TGT2_BG3 (1 << 11)
|
#define BLDCNT_TGT2_BG3 (1 << 11)
|
||||||
|
#define BLDCNT_TGT2_BG_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3)
|
||||||
#define BLDCNT_TGT2_OBJ (1 << 12)
|
#define BLDCNT_TGT2_OBJ (1 << 12)
|
||||||
#define BLDCNT_TGT2_BD (1 << 13)
|
#define BLDCNT_TGT2_BD (1 << 13)
|
||||||
#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD)
|
#define BLDCNT_TGT2_ALL (BLDCNT_TGT2_BG_ALL | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD)
|
||||||
|
|
||||||
// BLDALPHA
|
// BLDALPHA
|
||||||
#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1))
|
#define BLDALPHA_BLEND(target1, target2) (((target2) << 8) | (target1))
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#ifndef GUARD_INTRO_H
|
#ifndef GUARD_INTRO_H
|
||||||
#define GUARD_INTRO_H
|
#define GUARD_INTRO_H
|
||||||
|
|
||||||
void CB2_CopyrightScreen(void);
|
void CB2_InitCopyrightScreenAfterTitleScreen(void);
|
||||||
void c2_copyright_1(void);
|
void CB2_InitCopyrightScreenAfterBootup(void);
|
||||||
|
|
||||||
#endif //GUARD_INTRO_H
|
#endif //GUARD_INTRO_H
|
||||||
|
|||||||
@@ -15,8 +15,9 @@ u16 Random2(void);
|
|||||||
|
|
||||||
// The number 1103515245 comes from the example implementation of rand and srand
|
// The number 1103515245 comes from the example implementation of rand and srand
|
||||||
// in the ISO C standard.
|
// in the ISO C standard.
|
||||||
#define ISO_RANDOMIZE1(val)(1103515245 * (val) + 24691)
|
#define RAND_MULT 1103515245
|
||||||
#define ISO_RANDOMIZE2(val)(1103515245 * (val) + 12345)
|
#define ISO_RANDOMIZE1(val)(RAND_MULT * (val) + 24691)
|
||||||
|
#define ISO_RANDOMIZE2(val)(RAND_MULT * (val) + 12345)
|
||||||
|
|
||||||
//Sets the initial seed value of the pseudorandom number generator
|
//Sets the initial seed value of the pseudorandom number generator
|
||||||
void SeedRng(u16 seed);
|
void SeedRng(u16 seed);
|
||||||
|
|||||||
@@ -7,6 +7,9 @@
|
|||||||
#define SPRITE_NONE 0xFF
|
#define SPRITE_NONE 0xFF
|
||||||
#define TAG_NONE 0xFFFF
|
#define TAG_NONE 0xFFFF
|
||||||
|
|
||||||
|
// Given to SetSpriteMatrixAnchor to skip anchoring one of the coords.
|
||||||
|
#define NO_ANCHOR 0x800
|
||||||
|
|
||||||
struct SpriteSheet
|
struct SpriteSheet
|
||||||
{
|
{
|
||||||
const void *data; // Raw uncompressed pixel data
|
const void *data; // Raw uncompressed pixel data
|
||||||
@@ -228,7 +231,7 @@ struct Sprite
|
|||||||
u16 animEnded:1; //0x10
|
u16 animEnded:1; //0x10
|
||||||
u16 affineAnimEnded:1; //0x20
|
u16 affineAnimEnded:1; //0x20
|
||||||
u16 usingSheet:1; //0x40
|
u16 usingSheet:1; //0x40
|
||||||
u16 flags_f:1; //0x80
|
u16 anchored:1; //0x80
|
||||||
|
|
||||||
/*0x40*/ u16 sheetTileStart;
|
/*0x40*/ u16 sheetTileStart;
|
||||||
|
|
||||||
@@ -316,6 +319,6 @@ void ClearSpriteCopyRequests(void);
|
|||||||
void ResetAffineAnimData(void);
|
void ResetAffineAnimData(void);
|
||||||
void FreeSpriteTilesIfNotUsingSheet(struct Sprite *sprite);
|
void FreeSpriteTilesIfNotUsingSheet(struct Sprite *sprite);
|
||||||
s16 AllocSpriteTiles(u16 tileCount);
|
s16 AllocSpriteTiles(u16 tileCount);
|
||||||
void obj_pos2_update_enable(struct Sprite* sprite, s16 xmod, s16 ymod);
|
void SetSpriteMatrixAnchor(struct Sprite* sprite, s16 xmod, s16 ymod);
|
||||||
|
|
||||||
#endif //GUARD_SPRITE_H
|
#endif //GUARD_SPRITE_H
|
||||||
|
|||||||
@@ -600,58 +600,58 @@ u32 ChangeBgX(u8 bg, u32 value, u8 op)
|
|||||||
|
|
||||||
switch (op)
|
switch (op)
|
||||||
{
|
{
|
||||||
case 0:
|
case BG_COORD_SET:
|
||||||
default:
|
default:
|
||||||
sGpuBgConfigs2[bg].bg_x = value;
|
sGpuBgConfigs2[bg].bg_x = value;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case BG_COORD_ADD:
|
||||||
sGpuBgConfigs2[bg].bg_x += value;
|
sGpuBgConfigs2[bg].bg_x += value;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case BG_COORD_SUB:
|
||||||
sGpuBgConfigs2[bg].bg_x -= value;
|
sGpuBgConfigs2[bg].bg_x -= value;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
mode = GetBgMode();
|
mode = GetBgMode();
|
||||||
|
|
||||||
switch (bg)
|
switch (bg)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
temp1 = sGpuBgConfigs2[0].bg_x >> 0x8;
|
temp1 = sGpuBgConfigs2[0].bg_x >> 0x8;
|
||||||
SetGpuReg(REG_OFFSET_BG0HOFS, temp1);
|
SetGpuReg(REG_OFFSET_BG0HOFS, temp1);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
temp1 = sGpuBgConfigs2[1].bg_x >> 0x8;
|
temp1 = sGpuBgConfigs2[1].bg_x >> 0x8;
|
||||||
SetGpuReg(REG_OFFSET_BG1HOFS, temp1);
|
SetGpuReg(REG_OFFSET_BG1HOFS, temp1);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (mode == 0)
|
if (mode == 0)
|
||||||
{
|
{
|
||||||
temp1 = sGpuBgConfigs2[2].bg_x >> 0x8;
|
temp1 = sGpuBgConfigs2[2].bg_x >> 0x8;
|
||||||
SetGpuReg(REG_OFFSET_BG2HOFS, temp1);
|
SetGpuReg(REG_OFFSET_BG2HOFS, temp1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
temp1 = sGpuBgConfigs2[2].bg_x >> 0x10;
|
temp1 = sGpuBgConfigs2[2].bg_x >> 0x10;
|
||||||
temp2 = sGpuBgConfigs2[2].bg_x & 0xFFFF;
|
temp2 = sGpuBgConfigs2[2].bg_x & 0xFFFF;
|
||||||
SetGpuReg(REG_OFFSET_BG2X_H, temp1);
|
SetGpuReg(REG_OFFSET_BG2X_H, temp1);
|
||||||
SetGpuReg(REG_OFFSET_BG2X_L, temp2);
|
SetGpuReg(REG_OFFSET_BG2X_L, temp2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (mode == 0)
|
if (mode == 0)
|
||||||
{
|
{
|
||||||
temp1 = sGpuBgConfigs2[3].bg_x >> 0x8;
|
temp1 = sGpuBgConfigs2[3].bg_x >> 0x8;
|
||||||
SetGpuReg(REG_OFFSET_BG3HOFS, temp1);
|
SetGpuReg(REG_OFFSET_BG3HOFS, temp1);
|
||||||
}
|
}
|
||||||
else if (mode == 2)
|
else if (mode == 2)
|
||||||
{
|
{
|
||||||
temp1 = sGpuBgConfigs2[3].bg_x >> 0x10;
|
temp1 = sGpuBgConfigs2[3].bg_x >> 0x10;
|
||||||
temp2 = sGpuBgConfigs2[3].bg_x & 0xFFFF;
|
temp2 = sGpuBgConfigs2[3].bg_x & 0xFFFF;
|
||||||
SetGpuReg(REG_OFFSET_BG3X_H, temp1);
|
SetGpuReg(REG_OFFSET_BG3X_H, temp1);
|
||||||
SetGpuReg(REG_OFFSET_BG3X_L, temp2);
|
SetGpuReg(REG_OFFSET_BG3X_L, temp2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sGpuBgConfigs2[bg].bg_x;
|
return sGpuBgConfigs2[bg].bg_x;
|
||||||
@@ -679,58 +679,58 @@ u32 ChangeBgY(u8 bg, u32 value, u8 op)
|
|||||||
|
|
||||||
switch (op)
|
switch (op)
|
||||||
{
|
{
|
||||||
case 0:
|
case BG_COORD_SET:
|
||||||
default:
|
default:
|
||||||
sGpuBgConfigs2[bg].bg_y = value;
|
sGpuBgConfigs2[bg].bg_y = value;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case BG_COORD_ADD:
|
||||||
sGpuBgConfigs2[bg].bg_y += value;
|
sGpuBgConfigs2[bg].bg_y += value;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case BG_COORD_SUB:
|
||||||
sGpuBgConfigs2[bg].bg_y -= value;
|
sGpuBgConfigs2[bg].bg_y -= value;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
mode = GetBgMode();
|
mode = GetBgMode();
|
||||||
|
|
||||||
switch (bg)
|
switch (bg)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
temp1 = sGpuBgConfigs2[0].bg_y >> 0x8;
|
temp1 = sGpuBgConfigs2[0].bg_y >> 0x8;
|
||||||
SetGpuReg(REG_OFFSET_BG0VOFS, temp1);
|
SetGpuReg(REG_OFFSET_BG0VOFS, temp1);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
temp1 = sGpuBgConfigs2[1].bg_y >> 0x8;
|
temp1 = sGpuBgConfigs2[1].bg_y >> 0x8;
|
||||||
SetGpuReg(REG_OFFSET_BG1VOFS, temp1);
|
SetGpuReg(REG_OFFSET_BG1VOFS, temp1);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (mode == 0)
|
if (mode == 0)
|
||||||
{
|
{
|
||||||
temp1 = sGpuBgConfigs2[2].bg_y >> 0x8;
|
temp1 = sGpuBgConfigs2[2].bg_y >> 0x8;
|
||||||
SetGpuReg(REG_OFFSET_BG2VOFS, temp1);
|
SetGpuReg(REG_OFFSET_BG2VOFS, temp1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
temp1 = sGpuBgConfigs2[2].bg_y >> 0x10;
|
temp1 = sGpuBgConfigs2[2].bg_y >> 0x10;
|
||||||
temp2 = sGpuBgConfigs2[2].bg_y & 0xFFFF;
|
temp2 = sGpuBgConfigs2[2].bg_y & 0xFFFF;
|
||||||
SetGpuReg(REG_OFFSET_BG2Y_H, temp1);
|
SetGpuReg(REG_OFFSET_BG2Y_H, temp1);
|
||||||
SetGpuReg(REG_OFFSET_BG2Y_L, temp2);
|
SetGpuReg(REG_OFFSET_BG2Y_L, temp2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (mode == 0)
|
if (mode == 0)
|
||||||
{
|
{
|
||||||
temp1 = sGpuBgConfigs2[3].bg_y >> 0x8;
|
temp1 = sGpuBgConfigs2[3].bg_y >> 0x8;
|
||||||
SetGpuReg(REG_OFFSET_BG3VOFS, temp1);
|
SetGpuReg(REG_OFFSET_BG3VOFS, temp1);
|
||||||
}
|
}
|
||||||
else if (mode == 2)
|
else if (mode == 2)
|
||||||
{
|
{
|
||||||
temp1 = sGpuBgConfigs2[3].bg_y >> 0x10;
|
temp1 = sGpuBgConfigs2[3].bg_y >> 0x10;
|
||||||
temp2 = sGpuBgConfigs2[3].bg_y & 0xFFFF;
|
temp2 = sGpuBgConfigs2[3].bg_y & 0xFFFF;
|
||||||
SetGpuReg(REG_OFFSET_BG3Y_H, temp1);
|
SetGpuReg(REG_OFFSET_BG3Y_H, temp1);
|
||||||
SetGpuReg(REG_OFFSET_BG3Y_L, temp2);
|
SetGpuReg(REG_OFFSET_BG3Y_L, temp2);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sGpuBgConfigs2[bg].bg_y;
|
return sGpuBgConfigs2[bg].bg_y;
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ static void InitMainCallbacks(void)
|
|||||||
gMain.vblankCounter1 = 0;
|
gMain.vblankCounter1 = 0;
|
||||||
gMain.vblankCounter2 = 0;
|
gMain.vblankCounter2 = 0;
|
||||||
gMain.callback1 = NULL;
|
gMain.callback1 = NULL;
|
||||||
SetMainCallback2(c2_copyright_1);
|
SetMainCallback2(CB2_InitCopyrightScreenAfterBootup);
|
||||||
gSaveBlock2Ptr = &gSaveBlock2;
|
gSaveBlock2Ptr = &gSaveBlock2;
|
||||||
gSaveBlock1Ptr = &gSaveBlock1;
|
gSaveBlock1Ptr = &gSaveBlock1;
|
||||||
gSaveBlock2.encryptionKey = 0;
|
gSaveBlock2.encryptionKey = 0;
|
||||||
|
|||||||
@@ -80,8 +80,7 @@ static bool32 RunMinigameCountdownDigitsAnim(u8 spriteId)
|
|||||||
switch (sprite->data[0])
|
switch (sprite->data[0])
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
// some sort of affine transform; x transform disabled
|
SetSpriteMatrixAnchor(sprite, NO_ANCHOR, 26);
|
||||||
obj_pos2_update_enable(sprite, 0x800, 0x1A);
|
|
||||||
sprite->data[0]++;
|
sprite->data[0]++;
|
||||||
// fallthrough
|
// fallthrough
|
||||||
case 1:
|
case 1:
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "new_menu_helpers.h"
|
#include "new_menu_helpers.h"
|
||||||
#include "pokemon_special_anim_internal.h"
|
#include "pokemon_special_anim_internal.h"
|
||||||
|
#include "random.h"
|
||||||
#include "strings.h"
|
#include "strings.h"
|
||||||
#include "text_window.h"
|
#include "text_window.h"
|
||||||
#include "trig.h"
|
#include "trig.h"
|
||||||
@@ -1308,7 +1309,7 @@ static void Task_UseItem_OutwardSpiralDots(u8 taskId)
|
|||||||
static u16 PSAScene_RandomFromTask(u8 taskId)
|
static u16 PSAScene_RandomFromTask(u8 taskId)
|
||||||
{
|
{
|
||||||
u32 state = GetWordTaskArg(taskId, tOff_RngState);
|
u32 state = GetWordTaskArg(taskId, tOff_RngState);
|
||||||
state = state * 1103515245 + 24691;
|
state = ISO_RANDOMIZE1(state);
|
||||||
SetWordTaskArg(taskId, tOff_RngState, state);
|
SetWordTaskArg(taskId, tOff_RngState, state);
|
||||||
return state >> 16;
|
return state >> 16;
|
||||||
}
|
}
|
||||||
@@ -1446,8 +1447,7 @@ static void CreateLevelUpVerticalSprite(u8 taskId, s16 *data)
|
|||||||
{
|
{
|
||||||
gSprites[spriteId].oam.priority = tPriority;
|
gSprites[spriteId].oam.priority = tPriority;
|
||||||
gSprites[spriteId].tsYsubpixel = 0;
|
gSprites[spriteId].tsYsubpixel = 0;
|
||||||
// similar to the LCRNG in random.c, but seeding from data[2]
|
gSprites[spriteId].tsSpeed = (ISO_RANDOMIZE1(tMadeSprCt) & 0x3F) + 0x20;
|
||||||
gSprites[spriteId].tsSpeed = ((tMadeSprCt * 1103515245 + 24691) & 0x3F) + 0x20;
|
|
||||||
gSprites[spriteId].tsTaskId = taskId;
|
gSprites[spriteId].tsTaskId = taskId;
|
||||||
tActiveSprCt++;
|
tActiveSprCt++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,9 @@
|
|||||||
|
|
||||||
#define OAM_MATRIX_COUNT 32
|
#define OAM_MATRIX_COUNT 32
|
||||||
|
|
||||||
|
#define sAnchorX data[6]
|
||||||
|
#define sAnchorY data[7]
|
||||||
|
|
||||||
#define SET_SPRITE_TILE_RANGE(index, start, count) \
|
#define SET_SPRITE_TILE_RANGE(index, start, count) \
|
||||||
{ \
|
{ \
|
||||||
sSpriteTileRanges[index * 2] = start; \
|
sSpriteTileRanges[index * 2] = start; \
|
||||||
@@ -83,7 +86,7 @@ static void ApplyAffineAnimFrame(u8 matrixNum, struct AffineAnimFrameCmd *frameC
|
|||||||
static u8 IndexOfSpriteTileTag(u16 tag);
|
static u8 IndexOfSpriteTileTag(u16 tag);
|
||||||
static void AllocSpriteTileRange(u16 tag, u16 start, u16 count);
|
static void AllocSpriteTileRange(u16 tag, u16 start, u16 count);
|
||||||
static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset);
|
static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset);
|
||||||
static void obj_update_pos2(struct Sprite* sprite, s32 a1, s32 a2);
|
static void UpdateSpriteMatrixAnchorPos(struct Sprite* sprite, s32 a1, s32 a2);
|
||||||
|
|
||||||
typedef void (*AnimFunc)(struct Sprite *);
|
typedef void (*AnimFunc)(struct Sprite *);
|
||||||
typedef void (*AnimCmdFunc)(struct Sprite *);
|
typedef void (*AnimCmdFunc)(struct Sprite *);
|
||||||
@@ -161,41 +164,11 @@ static const struct Sprite sDummySprite =
|
|||||||
{
|
{
|
||||||
.oam = DUMMY_OAM_DATA,
|
.oam = DUMMY_OAM_DATA,
|
||||||
.anims = gDummySpriteAnimTable,
|
.anims = gDummySpriteAnimTable,
|
||||||
.images = NULL,
|
|
||||||
.affineAnims = gDummySpriteAffineAnimTable,
|
.affineAnims = gDummySpriteAffineAnimTable,
|
||||||
.template = &gDummySpriteTemplate,
|
.template = &gDummySpriteTemplate,
|
||||||
.subspriteTables = NULL,
|
|
||||||
.callback = SpriteCallbackDummy,
|
.callback = SpriteCallbackDummy,
|
||||||
.x = 304, .y = 160,
|
.x = DISPLAY_WIDTH + 64,
|
||||||
.x2 = 0, .y2 = 0,
|
.y = DISPLAY_HEIGHT,
|
||||||
.centerToCornerVecX = 0,
|
|
||||||
.centerToCornerVecY = 0,
|
|
||||||
.animNum = 0,
|
|
||||||
.animCmdIndex = 0,
|
|
||||||
.animDelayCounter = 0,
|
|
||||||
.animPaused = 0,
|
|
||||||
.affineAnimPaused = 0,
|
|
||||||
.animLoopCounter = 0,
|
|
||||||
.data = {0, 0, 0, 0, 0, 0, 0},
|
|
||||||
.inUse = 0,
|
|
||||||
.coordOffsetEnabled = 0,
|
|
||||||
.invisible = 0,
|
|
||||||
.flags_3 = 0,
|
|
||||||
.flags_4 = 0,
|
|
||||||
.flags_5 = 0,
|
|
||||||
.flags_6 = 0,
|
|
||||||
.flags_7 = 0,
|
|
||||||
.hFlip = 0,
|
|
||||||
.vFlip = 0,
|
|
||||||
.animBeginning = 0,
|
|
||||||
.affineAnimBeginning = 0,
|
|
||||||
.animEnded = 0,
|
|
||||||
.affineAnimEnded = 0,
|
|
||||||
.usingSheet = 0,
|
|
||||||
.flags_f = 0,
|
|
||||||
.sheetTileStart = 0,
|
|
||||||
.subspriteTableNum = 0,
|
|
||||||
.subspriteMode = 0,
|
|
||||||
.subpriority = 0xFF
|
.subpriority = 0xFF
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -212,7 +185,7 @@ const union AffineAnimCmd * const gDummySpriteAffineAnimTable[] = { &sDummyAffin
|
|||||||
const struct SpriteTemplate gDummySpriteTemplate =
|
const struct SpriteTemplate gDummySpriteTemplate =
|
||||||
{
|
{
|
||||||
.tileTag = 0,
|
.tileTag = 0,
|
||||||
.paletteTag = 0xFFFF,
|
.paletteTag = TAG_NONE,
|
||||||
.oam = &gDummyOamData,
|
.oam = &gDummyOamData,
|
||||||
.anims = gDummySpriteAnimTable,
|
.anims = gDummySpriteAnimTable,
|
||||||
.images = NULL,
|
.images = NULL,
|
||||||
@@ -1099,8 +1072,8 @@ void BeginAffineAnim(struct Sprite *sprite)
|
|||||||
sprite->affineAnimEnded = FALSE;
|
sprite->affineAnimEnded = FALSE;
|
||||||
ApplyAffineAnimFrame(matrixNum, &frameCmd);
|
ApplyAffineAnimFrame(matrixNum, &frameCmd);
|
||||||
sAffineAnimStates[matrixNum].delayCounter = frameCmd.duration;
|
sAffineAnimStates[matrixNum].delayCounter = frameCmd.duration;
|
||||||
if (sprite->flags_f)
|
if (sprite->anchored)
|
||||||
obj_update_pos2(sprite, sprite->data[6], sprite->data[7]);
|
UpdateSpriteMatrixAnchorPos(sprite, sprite->sAnchorX, sprite->sAnchorY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1125,8 +1098,8 @@ void ContinueAffineAnim(struct Sprite *sprite)
|
|||||||
funcIndex = type - 32765;
|
funcIndex = type - 32765;
|
||||||
sAffineAnimCmdFuncs[funcIndex](matrixNum, sprite);
|
sAffineAnimCmdFuncs[funcIndex](matrixNum, sprite);
|
||||||
}
|
}
|
||||||
if (sprite->flags_f)
|
if (sprite->anchored)
|
||||||
obj_update_pos2(sprite, sprite->data[6], sprite->data[7]);
|
UpdateSpriteMatrixAnchorPos(sprite, sprite->sAnchorX, sprite->sAnchorY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1220,14 +1193,14 @@ u8 GetSpriteMatrixNum(struct Sprite *sprite)
|
|||||||
return matrixNum;
|
return matrixNum;
|
||||||
}
|
}
|
||||||
|
|
||||||
void obj_pos2_update_enable(struct Sprite* sprite, s16 xmod, s16 ymod)
|
void SetSpriteMatrixAnchor(struct Sprite* sprite, s16 x, s16 y)
|
||||||
{
|
{
|
||||||
sprite->data[6] = xmod;
|
sprite->sAnchorX = x;
|
||||||
sprite->data[7] = ymod;
|
sprite->sAnchorY = y;
|
||||||
sprite->flags_f = 1;
|
sprite->anchored = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static s32 affine_get_new_pos2(s32 baseDim, s32 xformed, s32 modifier)
|
static s32 GetAnchorCoord(s32 baseDim, s32 xformed, s32 modifier)
|
||||||
{
|
{
|
||||||
s32 subResult, shiftResult;
|
s32 subResult, shiftResult;
|
||||||
|
|
||||||
@@ -1239,24 +1212,24 @@ static s32 affine_get_new_pos2(s32 baseDim, s32 xformed, s32 modifier)
|
|||||||
return modifier - ((u32)(modifier * xformed) / (u32)(baseDim) + shiftResult);
|
return modifier - ((u32)(modifier * xformed) / (u32)(baseDim) + shiftResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void obj_update_pos2(struct Sprite *sprite, s32 xmod, s32 ymod)
|
static void UpdateSpriteMatrixAnchorPos(struct Sprite *sprite, s32 x, s32 y)
|
||||||
{
|
{
|
||||||
s32 dim, baseDim, xFormed;
|
s32 dim, baseDim, xFormed;
|
||||||
|
|
||||||
u32 matrixNum = sprite->oam.matrixNum;
|
u32 matrixNum = sprite->oam.matrixNum;
|
||||||
if (xmod != 0x800)
|
if (x != NO_ANCHOR)
|
||||||
{
|
{
|
||||||
dim = sOamDimensionsCopy[sprite->oam.shape][sprite->oam.size][0];
|
dim = sOamDimensionsCopy[sprite->oam.shape][sprite->oam.size][0];
|
||||||
baseDim = dim << 8;
|
baseDim = dim << 8;
|
||||||
xFormed = (dim << 16) / gOamMatrices[matrixNum].a;
|
xFormed = (dim << 16) / gOamMatrices[matrixNum].a;
|
||||||
sprite->x2 = affine_get_new_pos2(baseDim, xFormed, xmod);
|
sprite->x2 = GetAnchorCoord(baseDim, xFormed, x);
|
||||||
}
|
}
|
||||||
if (ymod != 0x800)
|
if (y != NO_ANCHOR)
|
||||||
{
|
{
|
||||||
dim = sOamDimensionsCopy[sprite->oam.shape][sprite->oam.size][1];
|
dim = sOamDimensionsCopy[sprite->oam.shape][sprite->oam.size][1];
|
||||||
baseDim = dim << 8;
|
baseDim = dim << 8;
|
||||||
xFormed = (dim << 16) / gOamMatrices[matrixNum].d;
|
xFormed = (dim << 16) / gOamMatrices[matrixNum].d;
|
||||||
sprite->y2 = affine_get_new_pos2(baseDim, xFormed, ymod);
|
sprite->y2 = GetAnchorCoord(baseDim, xFormed, y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#include "intro.h"
|
#include "intro.h"
|
||||||
#include "load_save.h"
|
#include "load_save.h"
|
||||||
#include "new_game.h"
|
#include "new_game.h"
|
||||||
|
#include "random.h"
|
||||||
#include "save.h"
|
#include "save.h"
|
||||||
#include "main_menu.h"
|
#include "main_menu.h"
|
||||||
#include "clear_save_data_screen.h"
|
#include "clear_save_data_screen.h"
|
||||||
@@ -662,7 +663,7 @@ static void SetTitleScreenScene_Restart(s16 * data)
|
|||||||
case 4:
|
case 4:
|
||||||
HelpSystem_Disable();
|
HelpSystem_Disable();
|
||||||
DestroyTask(FindTaskIdByFunc(Task_TitleScreenMain));
|
DestroyTask(FindTaskIdByFunc(Task_TitleScreenMain));
|
||||||
SetMainCallback2(CB2_CopyrightScreen);
|
SetMainCallback2(CB2_InitCopyrightScreenAfterTitleScreen);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1121,7 +1122,7 @@ static u16 TitleScreen_rand(u8 taskId, u8 field)
|
|||||||
u32 rngval;
|
u32 rngval;
|
||||||
|
|
||||||
rngval = GetWordTaskArg(taskId, field);
|
rngval = GetWordTaskArg(taskId, field);
|
||||||
rngval = rngval * 1103515245 + 24691;
|
rngval = ISO_RANDOMIZE1(rngval);
|
||||||
SetWordTaskArg(taskId, field, rngval);
|
SetWordTaskArg(taskId, field, rngval);
|
||||||
return rngval >> 16;
|
return rngval >> 16;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
#include "wild_encounter.h"
|
#include "wild_encounter.h"
|
||||||
#include "event_data.h"
|
#include "event_data.h"
|
||||||
#include "fieldmap.h"
|
#include "fieldmap.h"
|
||||||
|
#include "random.h"
|
||||||
#include "roamer.h"
|
#include "roamer.h"
|
||||||
#include "field_player_avatar.h"
|
#include "field_player_avatar.h"
|
||||||
#include "battle_setup.h"
|
#include "battle_setup.h"
|
||||||
@@ -668,8 +669,7 @@ void SeedWildEncounterRng(u16 seed)
|
|||||||
|
|
||||||
static u16 WildEncounterRandom(void)
|
static u16 WildEncounterRandom(void)
|
||||||
{
|
{
|
||||||
sWildEncounterData.rngState *= 1103515245;
|
sWildEncounterData.rngState = ISO_RANDOMIZE2(sWildEncounterData.rngState);
|
||||||
sWildEncounterData.rngState += 12345;
|
|
||||||
return sWildEncounterData.rngState >> 16;
|
return sWildEncounterData.rngState >> 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||