Build main segment in JP (#939)

* Remove JP dump

* Add new JP dump

* Fix sort_symbol_addrs to only look at one version

* Deduplicate and sort symbol_addrs

* Clean up JP rom if conditions

* Use /current dir for diffing

* Fix state_step_logos

* Add todo comments for unsplitted segments

* Fix draw_merlee_message

* rename background_gfx

* Fix background_gfx

* Fix JP build

* Set unused data offsets to auto
This commit is contained in:
Marijn van der Werf 2023-02-17 03:06:56 +01:00 committed by GitHub
parent 8e671e2fff
commit 0d70e3ecac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1539 changed files with 11045 additions and 92909 deletions

View File

@ -1340,7 +1340,7 @@ def dump_objfile(
if not os.path.isfile(objfile):
fail(f"Not able to find .o file for function: {objfile} is not a file.")
refobjfile = "ver/us/expected/" + objfile
refobjfile = "ver/current/expected/" + objfile
if not os.path.isfile(refobjfile):
fail(f'Please ensure an OK .o file exists at "{refobjfile}".')

View File

@ -2201,11 +2201,17 @@ typedef struct {
/* 0x1D */ char unk_1D[3];
} Window; // size = 0x20
#if VERSION_JP
#define DISPLAYCONTEXT_GFX_COUNT 0x2000
#else
#define DISPLAYCONTEXT_GFX_COUNT 0x2080
#endif
typedef struct {
/* 0x00000 */ LookAt lookAt;
/* 0x00020 */ Hilite hilite;
/* 0x00030 */ Mtx camPerspMatrix[8]; // could only be length 4, unsure
/* 0x00230 */ Gfx mainGfx[0x2080];
/* 0x00230 */ Gfx mainGfx[DISPLAYCONTEXT_GFX_COUNT];
/* 0x10630 */ Gfx backgroundGfx[0x200]; // used by gfx_task_background
/* 0x11630 */ Mtx matrixStack[0x200];
} DisplayContext; // size = 0x19630

6
include/rumble.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef _RUMBLE_H_
#define _RUMBLE_H_
void reset_max_rumble_duration(void);
#endif

View File

@ -3,6 +3,173 @@
#include "item_entity.h"
#include "world/world.h"
#if !VERSION_JP
#define MSG_FullDesc_32 0
#define MSG_ItemFullDesc_AutoJump 0
#define MSG_ItemFullDesc_AutoMultibounce 0
#define MSG_ItemFullDesc_AutoSmash 0
#define MSG_ItemFullDesc_Berserker 0
#define MSG_ItemFullDesc_CrazyHeart 0
#define MSG_ItemFullDesc_EarthquakeJump 0
#define MSG_ItemFullDesc_FlowerFanatic 0
#define MSG_ItemFullDesc_ForestPass 0
#define MSG_ItemFullDesc_HealthyHealthy 0
#define MSG_ItemFullDesc_HustleDrink 0
#define MSG_ItemFullDesc_InsecticideHerb 0
#define MSG_ItemFullDesc_JumpCharge0 0
#define MSG_ItemFullDesc_Kaiden 0
#define MSG_ItemFullDesc_KootAltPhoto 0
#define MSG_ItemFullDesc_KootShell 0
#define MSG_ItemFullDesc_MegaHPDrain 0
#define MSG_ItemFullDesc_MysteryScroll 0
#define MSG_ItemFullDesc_PleaseComeBack 0
#define MSG_ItemFullDesc_Screwdriver 0
#define MSG_ItemFullDesc_ShellCrack 0
#define MSG_ItemFullDesc_SmashCharge0 0
#define MSG_ItemFullDesc_SuperFocus 0
#define MSG_ItemFullDesc_SuperJump 0
#define MSG_ItemFullDesc_SuperSmash 0
#define MSG_ItemFullDesc_SuspiciousNote 0
#define MSG_ItemFullDesc_ToadDoll 0
#define MSG_ItemFullDesc_UnusedLetter 0
#define MSG_ItemFullDesc_UnusedLetter02 0
#define MSG_ItemFullDesc_UnusedLetter03 0
#define MSG_ItemFullDesc_UnusedLetter04 0
#define MSG_ItemFullDesc_UnusedLetter05 0
#define MSG_ItemFullDesc_UnusedLetter06 0
#define MSG_ItemName_Heart 0
#define MSG_ItemName_Coin 0
#define MSG_ItemName_HeartPiece 0
#define MSG_ItemName_StarPoint 0
#define MSG_ItemName_HeartPoint 0
#define MSG_ItemName_FlowerPoint 0
#define MSG_ItemName_Map 0
#define MSG_ItemName_BigMap 0
#define MSG_ItemName_AutoJump 0
#define MSG_ItemName_AutoMultibounce 0
#define MSG_ItemName_AutoSmash 0
#define MSG_ItemName_Berserker 0
#define MSG_ItemName_CrazyHeart 0
#define MSG_ItemName_EarthquakeJump 0
#define MSG_ItemName_FlowerFanatic 0
#define MSG_ItemName_ForestPass 0
#define MSG_ItemName_HealthyHealthy 0
#define MSG_ItemName_HustleDrink 0
#define MSG_ItemName_InsecticideHerb 0
#define MSG_ItemName_JumpCharge0 0
#define MSG_ItemName_Kaiden 0
#define MSG_ItemName_KootAltPhoto 0
#define MSG_ItemName_KootShell 0
#define MSG_ItemName_MegaHPDrain 0
#define MSG_ItemName_MysteryScroll 0
#define MSG_ItemName_PleaseComeBack 0
#define MSG_ItemName_Screwdriver 0
#define MSG_ItemName_ShellCrack 0
#define MSG_ItemName_SmashCharge0 0
#define MSG_ItemName_SuperFocus 0
#define MSG_ItemName_SuperJump 0
#define MSG_ItemName_SuperSmash 0
#define MSG_ItemName_SuspiciousNote 0
#define MSG_ItemName_ToadDoll 0
#define MSG_ItemName_UnusedLetter 0
#define MSG_ItemName_UnusedLetter02 0
#define MSG_ItemName_UnusedLetter03 0
#define MSG_ItemName_UnusedLetter04 0
#define MSG_ItemName_UnusedLetter05 0
#define MSG_ItemName_UnusedLetter06 0
#define MSG_ItemShortDesc_AutoJump 0
#define MSG_ItemShortDesc_AutoMultibounce 0
#define MSG_ItemShortDesc_AutoSmash 0
#define MSG_ItemShortDesc_Berserker 0
#define MSG_ItemShortDesc_CrazyHeart 0
#define MSG_ItemShortDesc_EarthquakeJump 0
#define MSG_ItemShortDesc_FlowerFanatic 0
#define MSG_ItemShortDesc_ForestPass 0
#define MSG_ItemShortDesc_HealthyHealthy 0
#define MSG_ItemShortDesc_HustleDrink 0
#define MSG_ItemShortDesc_InsecticideHerb 0
#define MSG_ItemShortDesc_JumpCharge0 0
#define MSG_ItemShortDesc_Kaiden 0
#define MSG_ItemShortDesc_KootAltPhoto 0
#define MSG_ItemShortDesc_KootShell 0
#define MSG_ItemShortDesc_MegaHPDrain 0
#define MSG_ItemShortDesc_MysteryScroll 0
#define MSG_ItemShortDesc_PleaseComeBack 0
#define MSG_ItemShortDesc_Screwdriver 0
#define MSG_ItemShortDesc_ShellCrack 0
#define MSG_ItemShortDesc_SmashCharge0 0
#define MSG_ItemShortDesc_SuperFocus 0
#define MSG_ItemShortDesc_SuperJump 0
#define MSG_ItemShortDesc_SuperSmash 0
#define MSG_ItemShortDesc_SuspiciousNote 0
#define MSG_ItemShortDesc_ToadDoll 0
#define MSG_ItemShortDesc_UnusedLetter 0
#define MSG_ItemShortDesc_UnusedLetter02 0
#define MSG_ItemShortDesc_UnusedLetter03 0
#define MSG_ItemShortDesc_UnusedLetter04 0
#define MSG_ItemShortDesc_UnusedLetter05 0
#define MSG_ItemShortDesc_UnusedLetter06 0
#define MSG_MoveName_32 0
#define MSG_MoveName_AutoJump 0
#define MSG_MoveName_AutoMultibounce 0
#define MSG_MoveName_AutoSmash 0
#define MSG_MoveName_Berserker 0
#define MSG_MoveName_BumpAttack 0
#define MSG_MoveName_CloseCall 0
#define MSG_MoveName_CrazyHeart 0
#define MSG_MoveName_DefendPlus 0
#define MSG_MoveName_DizzyAttack 0
#define MSG_MoveName_EarthquakeJump 0
#define MSG_MoveName_FlowerFanatic 0
#define MSG_MoveName_FlowerFinder 0
#define MSG_MoveName_HealthyHealthy 0
#define MSG_MoveName_HeartFinder 0
#define MSG_MoveName_ISpy 0
#define MSG_MoveName_JumpCharge0 0
#define MSG_MoveName_LastStand 0
#define MSG_MoveName_LuckyDay 0
#define MSG_MoveName_MegaHPDrain 0
#define MSG_MoveName_PowerRush 0
#define MSG_MoveName_SmashCharge0 0
#define MSG_MoveName_SpeedySpin 0
#define MSG_MoveName_SpinAttack 0
#define MSG_MoveName_SuperJump 0
#define MSG_MoveName_SuperSmash 0
#define MSG_PartnerDesc_Goombaria_Battle 0
#define MSG_PartnerDesc_Goombaria_World 0
#define MSG_PartnerDesc_Goompa_Battle 0
#define MSG_PartnerDesc_Goompa_World 0
#define MSG_PartnerDesc_Twink_Battle 0
#define MSG_PartnerDesc_Twink_World 0
#define MSG_ShortDesc_32 0
// Use generic names for the different levels of partner moves
#define MSG_PartnerMoveName_BellyFlop1 MSG_PartnerMoveName_BellyFlop
#define MSG_PartnerMoveName_BellyFlop2 MSG_PartnerMoveName_BellyFlop
#define MSG_PartnerMoveName_BellyFlop3 MSG_PartnerMoveName_BellyFlop
#define MSG_PartnerMoveName_BodySlam1 MSG_PartnerMoveName_BodySlam
#define MSG_PartnerMoveName_BodySlam2 MSG_PartnerMoveName_BodySlam
#define MSG_PartnerMoveName_BodySlam3 MSG_PartnerMoveName_BodySlam
#define MSG_PartnerMoveName_ElectroDash1 MSG_PartnerMoveName_ElectroDash
#define MSG_PartnerMoveName_ElectroDash2 MSG_PartnerMoveName_ElectroDash
#define MSG_PartnerMoveName_ElectroDash3 MSG_PartnerMoveName_ElectroDash
#define MSG_PartnerMoveName_Headbonk1 MSG_PartnerMoveName_Headbonk
#define MSG_PartnerMoveName_Headbonk2 MSG_PartnerMoveName_Headbonk
#define MSG_PartnerMoveName_Headbonk3 MSG_PartnerMoveName_Headbonk
#define MSG_PartnerMoveName_ShellToss1 MSG_PartnerMoveName_ShellToss
#define MSG_PartnerMoveName_ShellToss2 MSG_PartnerMoveName_ShellToss
#define MSG_PartnerMoveName_ShellToss3 MSG_PartnerMoveName_ShellToss
#define MSG_PartnerMoveName_SkyDive1 MSG_PartnerMoveName_SkyDive
#define MSG_PartnerMoveName_SkyDive2 MSG_PartnerMoveName_SkyDive
#define MSG_PartnerMoveName_SkyDive3 MSG_PartnerMoveName_SkyDive
#define MSG_PartnerMoveName_Smack1 MSG_PartnerMoveName_Smack
#define MSG_PartnerMoveName_Smack2 MSG_PartnerMoveName_Smack
#define MSG_PartnerMoveName_Smack3 MSG_PartnerMoveName_Smack
#define MSG_PartnerMoveName_SpinyFlip1 MSG_PartnerMoveName_SpinyFlip
#define MSG_PartnerMoveName_SpinyFlip2 MSG_PartnerMoveName_SpinyFlip
#define MSG_PartnerMoveName_SpinyFlip3 MSG_PartnerMoveName_SpinyFlip
#endif
#define STANDARD_ITEM_SCRIPT(icon) \
{ \
is_SetIcon(60, icon) \
@ -193,8 +360,8 @@ PartnerPopupProperties gPartnerPopupProperties[] = {
[PARTNER_GOOMPA] {
MSG_Menus_Party_Goompa,
0x00000001,
0x00000000,
0x00000000,
MSG_PartnerDesc_Goompa_World,
MSG_PartnerDesc_Goompa_Battle,
},
[PARTNER_WATT] {
MSG_Menus_Party_Watt,
@ -223,14 +390,14 @@ PartnerPopupProperties gPartnerPopupProperties[] = {
[PARTNER_GOOMBARIA] {
MSG_Menus_Party_Goombaria,
0x00000001,
0x00000000,
0x00000000,
MSG_PartnerDesc_Goombaria_World,
MSG_PartnerDesc_Goombaria_Battle,
},
[PARTNER_TWINK] {
MSG_Menus_Party_Twink,
0x00000001,
0x00000000,
0x00000000,
MSG_PartnerDesc_Twink_World,
MSG_PartnerDesc_Twink_Battle,
}
};

View File

@ -10,6 +10,8 @@ extern f32 AlTuneScaling[];
#ifdef SHIFT
#define SBN_ROM_OFFSET SBN_ROM_START
#elif VERSION_JP
#define SBN_ROM_OFFSET 0xFC0000
#else
#define SBN_ROM_OFFSET 0xF00000
#endif

492
src/background_gfx.c Normal file
View File

@ -0,0 +1,492 @@
#include "common.h"
#include "nu/nusys.h"
#include "ld_addrs.h"
#include "hud_element.h"
#include "sprite.h"
#include "overlay.h"
extern s32 gPauseBackgroundFade;
Vp D_80074200 = {
.vp = {
.vscale = {640, 480, 511, 0},
.vtrans = {640, 480, 511, 0},
}
};
Gfx D_80074210[] = {
gsDPSetRenderMode(G_RM_OPA_SURF, G_RM_OPA_SURF2),
gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE),
gsDPSetColorDither(G_CD_BAYER),
gsSPEndDisplayList(),
};
Gfx D_80074230[] = {
gsSPViewport(&D_80074200),
gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN |
G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA),
gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH),
gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_OFF),
gsSPEndDisplayList(),
};
//extern s32 timeFreezeMode; // TODO bss
void gfx_init_state(void) {
gSPSegment(gMasterGfxPos++, 0x00, 0x0);
gSPDisplayList(gMasterGfxPos++, OS_K0_TO_PHYSICAL(D_80074230));
gSPDisplayList(gMasterGfxPos++, OS_K0_TO_PHYSICAL(D_80074210));
}
s32 gfx_frame_filter_pass_0(const u16* frameBuffer0, const u16* frameBuffer1, s32 y, s32 x, Color_RGBA8* out) {
s32 pixel = SCREEN_WIDTH * y + x;
out->a = (frameBuffer1[pixel] >> 2) & 0xF;
out->r = (frameBuffer0[pixel] >> 11);
out->g = (frameBuffer0[pixel] >> 6) & 0x1F;
out->b = (frameBuffer0[pixel] >> 1) & 0x1F;
}
void gfx_frame_filter_pass_1(Color_RGBA8* filterBuf0, Color_RGBA8 filterBuf1, u16* out) {
Color_RGBA8 sp0;
Color_RGBA8 sp8;
Color_RGBA8 final;
u8 rs[0x20];
u8 gs[0x20];
u8 bs[0x20];
s32 i;
sp8 = filterBuf1;
sp0 = filterBuf1;
for (i = 0; i < ARRAY_COUNT(rs); i++) {
rs[i] = 0;
gs[i] = 0;
bs[i] = 0;
}
for (i = 0; i < 6; i++) {
if (filterBuf0[i].a == 8) {
rs[filterBuf0[i].r]++;
gs[filterBuf0[i].g]++;
bs[filterBuf0[i].b]++;
}
}
for (i = 0; i < ARRAY_COUNT(rs); i++) {
if (rs[i] != 0) {
rs[i]--;
break;
}
}
for (; i < ARRAY_COUNT(rs); i++) {
if (rs[i] != 0) {
break;
}
}
if (sp0.r > i) {
sp0.r = i;
}
for (i = 0; i < ARRAY_COUNT(gs); i++) {
if (gs[i] != 0) {
gs[i]--;
break;
}
}
for (; i < ARRAY_COUNT(gs); i++) {
if (gs[i] != 0) {
break;
}
}
if (sp0.g > i) {
sp0.g = i;
}
for (i = 0; i < ARRAY_COUNT(bs); i++) {
if (bs[i] != 0) {
bs[i]--;
break;
}
}
for (; i < ARRAY_COUNT(bs); i++) {
if (bs[i] != 0) {
break;
}
}
if (sp0.b > i) {
sp0.b = i;
}
for (i = ARRAY_COUNT(rs) - 1; i >= 0; i--) {
if (rs[i] != 0) {
break;
}
}
if (sp8.r < i) {
sp8.r = i;
}
for (i = ARRAY_COUNT(gs) - 1; i >= 0; i--) {
if (gs[i] != 0) {
break;
}
}
if (sp8.g < i) {
sp8.g = i;
}
for (i = ARRAY_COUNT(bs) - 1; i >= 0; i--) {
if (bs[i] != 0) {
break;
}
}
if (sp8.b < i) {
sp8.b = i;
}
final.r = (sp8.r + sp0.r) - filterBuf1.r;
final.g = (sp8.g + sp0.g) - filterBuf1.g;
final.b = (sp8.b + sp0.b) - filterBuf1.b;
final.r = ((filterBuf1.r * filterBuf1.a) + (final.r * (8 - filterBuf1.a))) >> 3;
final.g = ((filterBuf1.g * filterBuf1.a) + (final.g * (8 - filterBuf1.a))) >> 3;
final.b = ((filterBuf1.b * filterBuf1.a) + (final.b * (8 - filterBuf1.a))) >> 3;
*out = (final.r << 11) + (final.g << 6) + (final.b << 1) + 1;
}
void func_80027600(Color_RGBA8* arg0, s16* out) {
Color_RGBA8 final;
u8 rs[0x20];
u8 gs[0x20];
u8 bs[0x20];
s32 i;
s32 sum;
for (i = 0; i < ARRAY_COUNT(rs); i++) {
rs[i] = 0;
gs[i] = 0;
bs[i] = 0;
}
for (i = 0; i < 9; i++) {
rs[arg0[i].r]++;
gs[arg0[i].g]++;
bs[arg0[i].b]++;
}
sum = 0;
for (i = 0; i < ARRAY_COUNT(rs); i++) {
sum += rs[i];
if (sum >= 5) {
break;
}
}
final.r = i;
sum = 0;
for (i = 0; i < ARRAY_COUNT(gs); i++) {
sum += gs[i];
if (sum >= 5) {
break;
}
}
final.g = i;
sum = 0;
for (i = 0; i < ARRAY_COUNT(bs); i++) {
sum += bs[i];
if (sum >= 5) {
break;
}
}
final.b = i;
*out = (final.r << 11) + (final.g << 6) + (final.b << 1) + 1;
}
void func_80027774(u16* frameBuffer0, u16* frameBuffer1, u16* zBuffer) {
Color_RGBA8 filterBuf0[9];
s32 x, y;
for (y = 1; y < SCREEN_HEIGHT - 1; y++) {
for (x = 1; x < SCREEN_WIDTH - 1; x++) {
/*
The application of gfx_frame_filter_pass_0 is done to the following pixels, where x is the current pixel.
...
.x.
...
*/
if (
(((frameBuffer1[(SCREEN_WIDTH * y) + x - 1] >> 2) & 0xF) < 8) ||
(((frameBuffer1[(SCREEN_WIDTH * y) + x + 0] >> 2) & 0xF) < 8) ||
(((frameBuffer1[(SCREEN_WIDTH * y) + x + 1] >> 2) & 0xF) < 8))
{
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y - 1, x - 1, &filterBuf0[0]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y - 1, x, &filterBuf0[1]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y - 1, x + 1, &filterBuf0[2]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y , x - 1, &filterBuf0[3]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y , x, &filterBuf0[4]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y , x + 1, &filterBuf0[5]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y + 1, x - 1, &filterBuf0[6]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y + 1, x, &filterBuf0[7]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y + 1, x + 1, &filterBuf0[8]);
func_80027600(filterBuf0, &zBuffer[(SCREEN_WIDTH * y) + x]);
} else {
zBuffer[(SCREEN_WIDTH * y) + x] = frameBuffer0[(SCREEN_WIDTH * y) + x] | 1;
}
}
}
}
// transfers the framebuffer into the depth buffer and applies filters
void gfx_transfer_frame_to_depth(u16* frameBuffer0, u16* frameBuffer1, u16* zBuffer) {
Color_RGBA8 filterBuf0[6];
Color_RGBA8 filterBuf1;
s32 y;
s32 x;
for (y = 1; y < SCREEN_HEIGHT - 1; y++) {
for (x = 2; x < SCREEN_WIDTH - 2; x++) {
s32 pixel = SCREEN_WIDTH * y + x;
/*
The application of gfx_frame_filter_pass_0 is done to the following pixels, where x is the current pixel.
. .
. x .
. .
*/
if (((frameBuffer1[pixel] >> 2) & 0xF) < 8) {
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y - 1, x - 1, &filterBuf0[0]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y - 1, x + 1, &filterBuf0[1]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y, x - 2, &filterBuf0[2]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y, x + 2, &filterBuf0[3]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y + 1, x - 1, &filterBuf0[4]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y + 1, x + 1, &filterBuf0[5]);
gfx_frame_filter_pass_0(frameBuffer0, frameBuffer1, y, x, &filterBuf1);
gfx_frame_filter_pass_1(filterBuf0, filterBuf1, &zBuffer[pixel]);
} else {
// Don't apply any filters to the edges of the screen
zBuffer[pixel] = frameBuffer0[pixel] | 1;
}
}
}
}
void func_80027BAC(s32 arg0, s32 arg1) {
s32 i;
s32 temp = 24; // todo figure out why this is needed and can't be used elsewhere
gDPPipeSync(gMasterGfxPos++);
gSPTexture(gMasterGfxPos++, -1, -1, 0, G_TX_RENDERTILE, G_ON);
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, arg1);
gDPSetCycleType(gMasterGfxPos++, G_CYC_COPY);
gDPSetTexturePersp(gMasterGfxPos++, G_TP_NONE);
gDPSetTextureLUT(gMasterGfxPos++, G_TT_NONE);
gDPSetRenderMode(gMasterGfxPos++, G_RM_NOOP, G_RM_NOOP2);
gDPSetTextureFilter(gMasterGfxPos++, G_TF_POINT);
for (i = 0; i < 40; i++) {
gDPLoadTextureTile(gMasterGfxPos++, arg0 + (0xF00 * i), G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH,
SCREEN_HEIGHT, 0, 0, SCREEN_WIDTH - 1, 5, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(gMasterGfxPos++, 0, i * temp, 0x04FC, (i * 24) + 20, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400);
gDPPipeSync(gMasterGfxPos++);
}
}
// Logic for the drawing the scene background. In normal operation, it draws the regular background.
// While opening pause menu, it does the following:
// * Extracts coverage from the current framebuffer and saves it to nuGfxCfb[1] on the first frame.
// * Copies the current framebuffer to the depth buffer to save it and applies a filter on the
// saved framebuffer based on the saved coverage values one frame later.
// * Draws the saved framebuffer to the current framebuffer while the pause screen is opened, fading it in over time.
void gfx_draw_background(void) {
Camera* camera;
s32 bgFlags;
s32 backgroundMinX;
s32 backgroundMaxX;
s32 backgroundMinY;
s32 backgroundMaxY;
s32 viewportStartX;
s32 i;
s32 a = SCREEN_COPY_TILE_HEIGHT << 2;
gDPSetScissor(gMasterGfxPos++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
camera = &gCameras[gCurrentCameraID];
bgFlags = gGameStatusPtr->backgroundFlags & BACKGROUND_RENDER_STATE_MASK;
switch (bgFlags) {
case BACKGROUND_RENDER_STATE_1:
// Save coverage to nunGfxCfb[1] using the VISCVG render mode
gDPPipeSync(gMasterGfxPos++);
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, nuGfxCfb[1]);
gDPSetCycleType(gMasterGfxPos++, G_CYC_1CYCLE);
gDPSetBlendColor(gMasterGfxPos++, 0x80, 0x80, 0x80, 0xFF);
gDPSetPrimDepth(gMasterGfxPos++, 0xFFFF, 0xFFFF);
gDPSetDepthSource(gMasterGfxPos++, G_ZS_PRIM);
gDPSetRenderMode(gMasterGfxPos++, G_RM_VISCVG, G_RM_VISCVG2);
gDPFillRectangle(gMasterGfxPos++, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
gDPPipeSync(gMasterGfxPos++);
gDPSetDepthSource(gMasterGfxPos++, G_ZS_PIXEL);
gGameStatusPtr->backgroundFlags &= ~BACKGROUND_RENDER_STATE_MASK;
gGameStatusPtr->backgroundFlags |= BACKGROUND_RENDER_STATE_2;
break;
case BACKGROUND_RENDER_STATE_2:
// Save the framebuffer into the depth buffer and run a filter on it based on the saved coverage values
gfx_transfer_frame_to_depth(nuGfxCfb[0], nuGfxCfb[1], nuGfxZBuffer); // applies filters to the framebuffer
gPauseBackgroundFade = 0;
gGameStatusPtr->backgroundFlags &= ~BACKGROUND_RENDER_STATE_MASK;
gGameStatusPtr->backgroundFlags |= BACKGROUND_RENDER_STATE_3;
// fallthrough
case BACKGROUND_RENDER_STATE_3:
// Draw the saved framebuffer to the background, fading in at a rate of 16 opacity per frame until reaching 128 opacity
gPauseBackgroundFade += 16;
if (gPauseBackgroundFade > 128) {
gPauseBackgroundFade = 128;
}
gDPPipeSync(gMasterGfxPos++);
gDPSetScissor(gMasterGfxPos++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
gDPSetCycleType(gMasterGfxPos++, G_CYC_FILL);
gDPSetRenderMode(gMasterGfxPos++, G_RM_NOOP, G_RM_NOOP2);
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, nuGfxCfb_ptr);
gDPSetFillColor(gMasterGfxPos++, PACK_FILL_COLOR(0, 0, 0, 1));
gDPFillRectangle(gMasterGfxPos++, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1);
gDPSetCycleType(gMasterGfxPos++, G_CYC_1CYCLE);
gDPSetTexturePersp(gMasterGfxPos++, G_TP_NONE);
gDPSetTextureLUT(gMasterGfxPos++, G_TT_NONE);
gDPSetRenderMode(gMasterGfxPos++, G_RM_OPA_SURF, G_RM_OPA_SURF2);
// @bug In 1-cycle mode, the two combiner cycles should be identical. Using Texel1 here in the second cycle,
// which is the actual cycle of the combiner used on hardware in 1-cycle mode, actually samples the next
// pixel's texel value instead of the current pixel's. This results in a one-pixel offset.
gDPSetCombineLERP(gMasterGfxPos++, PRIMITIVE, TEXEL0, PRIMITIVE_ALPHA, TEXEL0, 0, 0, 0, 1, PRIMITIVE,
TEXEL1, PRIMITIVE_ALPHA, TEXEL1, 0, 0, 0, 1);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 40, 40, 40, gPauseBackgroundFade);
gDPSetTextureFilter(gMasterGfxPos++, G_TF_POINT);
for (i = 0; i < 40; i++) {
gDPLoadTextureTile(gMasterGfxPos++, nuGfxZBuffer + (i * SCREEN_WIDTH * SCREEN_COPY_TILE_HEIGHT), G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH,
SCREEN_HEIGHT, 0, 0, SCREEN_WIDTH - 1, SCREEN_COPY_TILE_HEIGHT - 1, 0, G_TX_NOMIRROR | G_TX_WRAP,
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
// @bug Due to the previous issue with the incorrect second cycle combiner, the devs added a 1-pixel offset to texture coordinates
// in this texrect to compensate for the combiner error.
gSPTextureRectangle(gMasterGfxPos++,
// ulx, uly, lrx, lry
0 << 2, i * a, SCREEN_WIDTH << 2, a + (i * (SCREEN_COPY_TILE_HEIGHT << 2)),
// tile
G_TX_RENDERTILE,
// s, t, dsdx, dtdy
-1 << 5, 0 << 5, 1 << 10, 1 << 10);
gDPPipeSync(gMasterGfxPos++);
}
break;
default:
// Draw the scene's background as normal
if (gOverrideFlags & GLOBAL_OVERRIDES_8) {
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, osVirtualToPhysical(nuGfxCfb_ptr));
return;
}
gDPSetDepthImage(gMasterGfxPos++, OS_K0_TO_PHYSICAL(nuGfxZBuffer));
gDPSetCycleType(gMasterGfxPos++, G_CYC_FILL);
gDPSetRenderMode(gMasterGfxPos++, G_RM_NOOP, G_RM_NOOP2);
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, OS_K0_TO_PHYSICAL(nuGfxZBuffer));
gDPSetFillColor(gMasterGfxPos++, PACK_FILL_DEPTH(G_MAXFBZ, 0));
gDPFillRectangle(gMasterGfxPos++, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1);
gDPPipeSync(gMasterGfxPos++);
gDPSetColorImage(gMasterGfxPos++, G_IM_FMT_RGBA, G_IM_SIZ_16b, SCREEN_WIDTH, osVirtualToPhysical(nuGfxCfb_ptr));
gDPSetFillColor(gMasterGfxPos++, PACK_FILL_COLOR(camera->bgColor[0], camera->bgColor[1], camera->bgColor[2], 1));
backgroundMinX = gGameStatusPtr->backgroundMinX;
backgroundMaxX = backgroundMinX + gGameStatusPtr->backgroundMaxX;
backgroundMinY = gGameStatusPtr->backgroundMinY;
backgroundMaxY = backgroundMinY + gGameStatusPtr->backgroundMaxY;
viewportStartX = camera->viewportStartX;
if (backgroundMinX < viewportStartX) {
backgroundMinX = viewportStartX;
}
if (backgroundMinY < camera->viewportStartY) {
backgroundMinY = camera->viewportStartY;
}
if (backgroundMaxX > viewportStartX + camera->viewportW) {
backgroundMaxX = viewportStartX + camera->viewportW;
}
if (backgroundMaxY > camera->viewportStartY + camera->viewportH) {
backgroundMaxY = camera->viewportStartY + camera->viewportH;
}
if (backgroundMinX < 0) {
backgroundMinX = 0;
}
if (backgroundMinY < 0) {
backgroundMinY = 0;
}
if (backgroundMaxX < 1) {
backgroundMaxX = 1;
}
if (backgroundMaxY < 1) {
backgroundMaxY = 1;
}
if (backgroundMinX > SCREEN_WIDTH - 1) {
backgroundMinX = SCREEN_WIDTH - 1;
}
if (backgroundMinY > SCREEN_HEIGHT - 1) {
backgroundMinY = SCREEN_HEIGHT - 1;
}
if (backgroundMaxX > SCREEN_WIDTH) {
backgroundMaxX = SCREEN_WIDTH;
}
if (backgroundMaxY > SCREEN_HEIGHT) {
backgroundMaxY = SCREEN_HEIGHT;
}
if (!(gGameStatusPtr->backgroundFlags & BACKGROUND_FLAG_TEXTURE)) {
gDPFillRectangle(gMasterGfxPos++, backgroundMinX, backgroundMinY, backgroundMaxX - 1, backgroundMaxY - 1);
} else {
appendGfx_background_texture();
}
gDPPipeSync(gMasterGfxPos++);
gDPSetCycleType(gMasterGfxPos++, G_CYC_FILL);
gDPSetRenderMode(gMasterGfxPos++, G_RM_NOOP, G_RM_NOOP2);
gDPSetFillColor(gMasterGfxPos++, PACK_FILL_COLOR(0, 0, 0, 1));
gDPPipeSync(gMasterGfxPos++);
if (backgroundMinY > 0) {
gDPFillRectangle(gMasterGfxPos++, 0, 0, SCREEN_WIDTH - 1, backgroundMinY - 1);
gDPNoOp(gMasterGfxPos++);
}
if (backgroundMinX > 0) {
gDPFillRectangle(gMasterGfxPos++, 0, backgroundMinY, backgroundMinX - 1, backgroundMaxY - 1);
gDPNoOp(gMasterGfxPos++);
}
if (backgroundMaxX < SCREEN_WIDTH) {
gDPFillRectangle(gMasterGfxPos++, backgroundMaxX, backgroundMinY, SCREEN_WIDTH - 1, backgroundMaxY - 1);
gDPNoOp(gMasterGfxPos++);
}
if (backgroundMaxY < SCREEN_HEIGHT) {
gDPFillRectangle(gMasterGfxPos++, 0, backgroundMaxY, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1);
gDPNoOp(gMasterGfxPos++);
}
break;
}
gDPPipeSync(gMasterGfxPos++);
}

View File

@ -7,7 +7,14 @@
#include "world/partners.h"
#include "sprite.h"
#include "model.h"
#if !VERSION_JP
// TODO: remove this conditional when more of the JP rom has been processed
#include "sprite/npc/BattleMerlee.h"
#else
#define ANIM_BattleMerlee_Gather 0x00BB0001
#define ANIM_BattleMerlee_Release 0x00BB0000
#endif
ApiStatus ShowMerleeCoinMessage(Evt* script, s32 isInitialCall);
ApiStatus ShowMerleeRanOutMessage(Evt* script, s32 isInitialCall);

View File

@ -351,6 +351,9 @@ ApiStatus BindNpcAI(Evt* script, s32 isInitialCall) {
}
if (enemy->aiScript != NULL) {
#if VERSION_JP
groupFlags = enemy->aiScript->groupFlags;
#endif
kill_script_by_ID(enemy->aiScriptID);
}
@ -401,6 +404,9 @@ ApiStatus RestartNpcAI(Evt* script, s32 isInitialCall) {
}
if (enemy->aiScript != NULL) {
#if VERSION_JP
groupFlags = enemy->aiScript->groupFlags;
#endif
kill_script_by_ID(enemy->aiScriptID);
}
@ -519,6 +525,9 @@ ApiStatus RestartNpcAux(Evt* script, s32 isInitialCall) {
}
if (enemy->auxScript != NULL) {
#if VERSION_JP
groupFlags = enemy->auxScript->groupFlags;
#endif
kill_script_by_ID(enemy->auxScriptID);
}

View File

@ -89,15 +89,7 @@ char* is_debug_print(char* arg0, const char* str, size_t count) {
return (char*) 1;
}
#ifdef VERSION_US
void func_80025F44(const char* message, char* file, s32 line) {
osSyncPrintf("File:%s Line:%d %s \n", file, line, message);
PANIC();
}
#elif VERSION_JP
extern const char D_80097D10[]; // "File:%s Line:%d %s \n\0\0\0"
void func_80025F44(char* arg0, char* file, s32 line, char* arg3) {
osSyncPrintf(D_80097D10, file, line, arg0);
PANIC();
}
#endif

View File

@ -111,7 +111,7 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 8: Map
.nameMsg = 0,
.nameMsg = MSG_ItemName_Map,
.fullDescMsg = 0,
.shortDescMsg = 0,
.sellValue = -1,
@ -124,7 +124,7 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 9: BigMap
.nameMsg = 0,
.nameMsg = MSG_ItemName_BigMap,
.fullDescMsg = 0,
.shortDescMsg = 0,
.sellValue = -1,
@ -358,9 +358,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 1B: ForestPass
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_ForestPass,
.fullDescMsg = MSG_ItemFullDesc_ForestPass,
.shortDescMsg = MSG_ItemShortDesc_ForestPass,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_ForestPass),
.sortValue = 0,
@ -501,9 +501,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 26: SuspiciousNote
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_SuspiciousNote,
.fullDescMsg = MSG_ItemFullDesc_SuspiciousNote,
.shortDescMsg = MSG_ItemShortDesc_SuspiciousNote,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_SuspiciousNote),
.sortValue = 0,
@ -527,9 +527,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 28: Screwdriver
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_Screwdriver,
.fullDescMsg = MSG_ItemFullDesc_Screwdriver,
.shortDescMsg = MSG_ItemShortDesc_Screwdriver,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_Screwdriver),
.sortValue = 0,
@ -618,9 +618,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 2F: ToadDoll
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_ToadDoll,
.fullDescMsg = MSG_ItemFullDesc_ToadDoll,
.shortDescMsg = MSG_ItemShortDesc_ToadDoll,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_ToadDoll),
.sortValue = 0,
@ -696,9 +696,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 35: UnusedLetter01
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_UnusedLetter,
.fullDescMsg = MSG_ItemFullDesc_UnusedLetter,
.shortDescMsg = MSG_ItemShortDesc_UnusedLetter,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_Letter),
.sortValue = 0,
@ -826,9 +826,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 3F: UnusedLetter02
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_UnusedLetter02,
.fullDescMsg = MSG_ItemFullDesc_UnusedLetter02,
.shortDescMsg = MSG_ItemShortDesc_UnusedLetter02,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_Letter),
.sortValue = 0,
@ -865,9 +865,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 42: UnusedLetter03
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_UnusedLetter03,
.fullDescMsg = MSG_ItemFullDesc_UnusedLetter03,
.shortDescMsg = MSG_ItemShortDesc_UnusedLetter03,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_Letter),
.sortValue = 0,
@ -878,9 +878,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 43: UnusedLetter04
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_UnusedLetter04,
.fullDescMsg = MSG_ItemFullDesc_UnusedLetter04,
.shortDescMsg = MSG_ItemShortDesc_UnusedLetter04,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_Letter),
.sortValue = 0,
@ -891,9 +891,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 44: UnusedLetter05
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_UnusedLetter05,
.fullDescMsg = MSG_ItemFullDesc_UnusedLetter05,
.shortDescMsg = MSG_ItemShortDesc_UnusedLetter05,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_Letter),
.sortValue = 0,
@ -1008,9 +1008,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 4D: UnusedLetter06
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_UnusedLetter06,
.fullDescMsg = MSG_ItemFullDesc_UnusedLetter06,
.shortDescMsg = MSG_ItemShortDesc_UnusedLetter06,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_Letter),
.sortValue = 0,
@ -1112,9 +1112,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 55: UnusedLetter07
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_UnusedLetter,
.fullDescMsg = MSG_ItemFullDesc_UnusedLetter,
.shortDescMsg = MSG_ItemShortDesc_UnusedLetter,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_Letter),
.sortValue = 0,
@ -1489,9 +1489,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 72: KootShell
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_KootShell,
.fullDescMsg = MSG_ItemFullDesc_KootShell,
.shortDescMsg = MSG_ItemShortDesc_KootShell,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_KootShell),
.sortValue = 0,
@ -1528,9 +1528,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 75: KootAltPhoto
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_KootAltPhoto,
.fullDescMsg = MSG_ItemFullDesc_KootAltPhoto,
.shortDescMsg = MSG_ItemShortDesc_KootAltPhoto,
.sellValue = -1,
.hudElemID = ITEM_HS_INDEX(HES_Item_KootPhoto),
.sortValue = 0,
@ -1762,9 +1762,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 87: InsecticideHerb
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_InsecticideHerb,
.fullDescMsg = MSG_ItemFullDesc_InsecticideHerb,
.shortDescMsg = MSG_ItemShortDesc_InsecticideHerb,
.sellValue = 1,
.hudElemID = ITEM_HS_INDEX(HES_Item_InsecticideHerb),
.sortValue = 0,
@ -1892,9 +1892,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 91: HustleDrink
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_HustleDrink,
.fullDescMsg = MSG_ItemFullDesc_HustleDrink,
.shortDescMsg = MSG_ItemShortDesc_HustleDrink,
.sellValue = 10,
.hudElemID = ITEM_HS_INDEX(HES_Item_HustleDrink),
.sortValue = 0,
@ -1996,9 +1996,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 99: PleaseComeBack
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_PleaseComeBack,
.fullDescMsg = MSG_ItemFullDesc_PleaseComeBack,
.shortDescMsg = MSG_ItemShortDesc_PleaseComeBack,
.sellValue = 5,
.hudElemID = ITEM_HS_INDEX(HES_Item_PleaseComeBack),
.sortValue = 0,
@ -3049,9 +3049,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item EA: MysteryScroll
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_MysteryScroll,
.fullDescMsg = MSG_ItemFullDesc_MysteryScroll,
.shortDescMsg = MSG_ItemShortDesc_MysteryScroll,
.sellValue = 100,
.hudElemID = ITEM_HS_INDEX(HES_Item_Present),
.sortValue = 0,
@ -3127,9 +3127,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item F0: SmashCharge0
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_SmashCharge0,
.fullDescMsg = MSG_ItemFullDesc_SmashCharge0,
.shortDescMsg = MSG_ItemShortDesc_SmashCharge0,
.sellValue = 30,
.hudElemID = ITEM_HS_INDEX(HES_Item_SmashCharge0),
.sortValue = 20,
@ -3205,9 +3205,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item F6: JumpCharge0
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_JumpCharge0,
.fullDescMsg = MSG_ItemFullDesc_JumpCharge0,
.shortDescMsg = MSG_ItemShortDesc_JumpCharge0,
.sellValue = 30,
.hudElemID = ITEM_HS_INDEX(HES_Item_JumpCharge0),
.sortValue = 4,
@ -3348,9 +3348,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 101: Berserker
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_Berserker,
.fullDescMsg = MSG_ItemFullDesc_Berserker,
.shortDescMsg = MSG_ItemShortDesc_Berserker,
.sellValue = 300,
.hudElemID = ITEM_HS_INDEX(HES_Item_Berserker),
.sortValue = 88,
@ -3517,9 +3517,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 10E: AutoJump
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_AutoJump,
.fullDescMsg = MSG_ItemFullDesc_AutoJump,
.shortDescMsg = MSG_ItemShortDesc_AutoJump,
.sellValue = 50,
.hudElemID = ITEM_HS_INDEX(HES_Item_AutoJump),
.sortValue = 15,
@ -3530,9 +3530,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 10F: AutoSmash
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_AutoSmash,
.fullDescMsg = MSG_ItemFullDesc_AutoSmash,
.shortDescMsg = MSG_ItemShortDesc_AutoSmash,
.sellValue = 50,
.hudElemID = ITEM_HS_INDEX(HES_Item_AutoSmash),
.sortValue = 31,
@ -3543,9 +3543,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 110: CrazyHeart
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_CrazyHeart,
.fullDescMsg = MSG_ItemFullDesc_CrazyHeart,
.shortDescMsg = MSG_ItemShortDesc_CrazyHeart,
.sellValue = 300,
.hudElemID = ITEM_HS_INDEX(HES_Item_CrazyHeart),
.sortValue = 45,
@ -3608,9 +3608,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 115: MegaHPDrain
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_MegaHPDrain,
.fullDescMsg = MSG_ItemFullDesc_MegaHPDrain,
.shortDescMsg = MSG_ItemShortDesc_MegaHPDrain,
.sellValue = 100,
.hudElemID = ITEM_HS_INDEX(HES_Item_MegaHPDrain),
.sortValue = 87,
@ -3647,9 +3647,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 118: AutoMultibounce
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_AutoMultibounce,
.fullDescMsg = MSG_ItemFullDesc_AutoMultibounce,
.shortDescMsg = MSG_ItemShortDesc_AutoMultibounce,
.sellValue = 75,
.hudElemID = ITEM_HS_INDEX(HES_Item_AutoMultibounce),
.sortValue = 14,
@ -3660,9 +3660,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 119: FlowerFanatic
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_FlowerFanatic,
.fullDescMsg = MSG_ItemFullDesc_FlowerFanatic,
.shortDescMsg = MSG_ItemShortDesc_FlowerFanatic,
.sellValue = 300,
.hudElemID = ITEM_HS_INDEX(HES_Item_FlowerFanatic),
.sortValue = 66,
@ -3777,9 +3777,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 122: SuperJump
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_SuperJump,
.fullDescMsg = MSG_ItemFullDesc_SuperJump,
.shortDescMsg = MSG_ItemShortDesc_SuperJump,
.sellValue = 100,
.hudElemID = ITEM_HS_INDEX(HES_Item_SuperJump),
.sortValue = 2,
@ -3816,9 +3816,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 125: SuperSmash
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_SuperSmash,
.fullDescMsg = MSG_ItemFullDesc_SuperSmash,
.shortDescMsg = MSG_ItemShortDesc_SuperSmash,
.sellValue = 100,
.hudElemID = ITEM_HS_INDEX(HES_Item_SuperSmash),
.sortValue = 18,
@ -3881,9 +3881,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 12A: SuperFocus
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_SuperFocus,
.fullDescMsg = MSG_ItemFullDesc_SuperFocus,
.shortDescMsg = MSG_ItemShortDesc_SuperFocus,
.sellValue = 100,
.hudElemID = ITEM_HS_INDEX(HES_Item_SuperFocus),
.sortValue = 52,
@ -3907,9 +3907,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 12C: ShellCrack
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_ShellCrack,
.fullDescMsg = MSG_ItemFullDesc_ShellCrack,
.shortDescMsg = MSG_ItemShortDesc_ShellCrack,
.sellValue = 100,
.hudElemID = ITEM_HS_INDEX(HES_Item_Present),
.sortValue = 30,
@ -3920,9 +3920,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 12D: Kaiden
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_Kaiden,
.fullDescMsg = MSG_ItemFullDesc_Kaiden,
.shortDescMsg = MSG_ItemShortDesc_Kaiden,
.sellValue = 300,
.hudElemID = ITEM_HS_INDEX(HES_Item_Kaiden),
.sortValue = 39,
@ -3972,9 +3972,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 131: EarthquakeJump
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_EarthquakeJump,
.fullDescMsg = MSG_ItemFullDesc_EarthquakeJump,
.shortDescMsg = MSG_ItemShortDesc_EarthquakeJump,
.sellValue = 100,
.hudElemID = ITEM_HS_INDEX(HES_Item_EarthquakeJump),
.sortValue = 11,
@ -4375,9 +4375,9 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 150: HealthyHealthy
.nameMsg = 0,
.fullDescMsg = 0,
.shortDescMsg = 0,
.nameMsg = MSG_ItemName_HealthyHealthy,
.fullDescMsg = MSG_ItemFullDesc_HealthyHealthy,
.shortDescMsg = MSG_ItemShortDesc_HealthyHealthy,
.sellValue = 100,
.hudElemID = ITEM_HS_INDEX(HES_Item_HealthyHealthy),
.sortValue = 93,
@ -4453,7 +4453,7 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 156: Heart
.nameMsg = 0,
.nameMsg = MSG_ItemName_Heart,
.fullDescMsg = 0,
.shortDescMsg = 0,
.sellValue = -1,
@ -4466,7 +4466,7 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 157: Coin
.nameMsg = 0,
.nameMsg = MSG_ItemName_Coin,
.fullDescMsg = 0,
.shortDescMsg = 0,
.sellValue = 1,
@ -4479,7 +4479,7 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 158: HeartPiece
.nameMsg = 0,
.nameMsg = MSG_ItemName_HeartPiece,
.fullDescMsg = 0,
.shortDescMsg = 0,
.sellValue = -1,
@ -4492,7 +4492,7 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 159: StarPoint
.nameMsg = 0,
.nameMsg = MSG_ItemName_StarPoint,
.fullDescMsg = 0,
.shortDescMsg = 0,
.sellValue = -1,
@ -4505,7 +4505,7 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 15A: HeartPoint
.nameMsg = 0,
.nameMsg = MSG_ItemName_HeartPoint,
.fullDescMsg = 0,
.shortDescMsg = 0,
.sellValue = -1,
@ -4518,7 +4518,7 @@ ItemData gItemTable[] = {
.potencyB = 0
},
{ // item 15B: FlowerPoint
.nameMsg = 0,
.nameMsg = MSG_ItemName_FlowerPoint,
.fullDescMsg = 0,
.shortDescMsg = 0,
.sellValue = 1,

View File

@ -1,25 +0,0 @@
#include "common.h"