diff --git a/src/audio/audio_session_presets.c b/src/audio/audio_session_presets.c index 71c6f7602..3e5c6a631 100644 --- a/src/audio/audio_session_presets.c +++ b/src/audio/audio_session_presets.c @@ -1,6 +1,7 @@ #ifndef AUDIO_SESSION_PRESETS_H #define AUDIO_SESSION_PRESETS_H +#include "mk64.h" #include "internal.h" #include "data.h" #include "../buffers/audio_heap.h" @@ -32,9 +33,9 @@ struct AudioSessionSettingsEU gAudioSessionPresets[] = { s8 gUnusedCount800EA5C8 = 0x1c; s16 gTatumsPerBeat = TATUMS_PER_BEAT; -s32 gAudioHeapSize = AUDIO_HEAP_SIZE; -s32 gAudioInitPoolSize = AUDIO_HEAP_INIT_SIZE; +s32 gAudioHeapSize = DOUBLE_SIZE_ON_64_BIT(AUDIO_HEAP_SIZE); +s32 gAudioInitPoolSize = DOUBLE_SIZE_ON_64_BIT(AUDIO_HEAP_INIT_SIZE); s32 D_800EA5D8 = 0; -volatile s32 gAudioLoadLock = 0; +volatile s32 gAudioLoadLock = AUDIO_LOCK_UNINITIALIZED; #endif diff --git a/src/audio/heap.c b/src/audio/heap.c index 3e88dbf1e..63482a163 100644 --- a/src/audio/heap.c +++ b/src/audio/heap.c @@ -2,6 +2,7 @@ #include #include +#include "mk64.h" #include "audio/data.h" #include "audio/effects.h" #include "audio/heap.h" @@ -159,7 +160,7 @@ void* soundAlloc(struct SoundAllocPool* pool, u32 size) { *pos = 0; } } else { - // eu_stubbed_printf_1("Heap OverFlow : Not Allocate %d!\n", size); + printf("audio/heap.c: Heap OverFlow : Not Allocate %d!\n", size); return NULL; } pool->numAllocatedEntries++; @@ -600,9 +601,9 @@ void audio_reset_session(void) { s32 var_s1; s32 var_s5; s32 temp; - u32 totalMem; - u32 temporaryMem; - u32 persistentMem; + s32 totalMem; + s32 temporaryMem; + s32 persistentMem; s16* mem; struct SynthesisReverb* reverb; struct ReverbSettingsEU* reverbSettings; @@ -633,8 +634,8 @@ void audio_reset_session(void) { gAudioBufferParameters.updatesPerFrame *= gAudioBufferParameters.presetUnk4; gMaxAudioCmds = (gMaxSimultaneousNotes * 0x14 * gAudioBufferParameters.updatesPerFrame) + (temp_s6->numReverbs * 0x20) + 0x1E0; - persistentMem = temp_s6->persistentSeqMem + temp_s6->persistentBankMem + temp_s6->unk_18; - temporaryMem = temp_s6->temporarySeqMem + temp_s6->temporaryBankMem + temp_s6->unk_24; + persistentMem = DOUBLE_SIZE_ON_64_BIT(temp_s6->persistentSeqMem + temp_s6->persistentBankMem + temp_s6->unk_18); + temporaryMem = DOUBLE_SIZE_ON_64_BIT(temp_s6->temporarySeqMem + temp_s6->temporaryBankMem + temp_s6->unk_24); totalMem = persistentMem + temporaryMem; temp = (gAudioSessionPool.size - totalMem) - 0x100; sSessionPoolSplit.wantSeq = temp; @@ -643,12 +644,12 @@ void audio_reset_session(void) { sSeqAndBankPoolSplit.wantPersistent = persistentMem; sSeqAndBankPoolSplit.wantTemporary = temporaryMem; seq_and_bank_pool_init(&sSeqAndBankPoolSplit); - sPersistentCommonPoolSplit.wantSeq = temp_s6->persistentSeqMem; - sPersistentCommonPoolSplit.wantBank = temp_s6->persistentBankMem; + sPersistentCommonPoolSplit.wantSeq = DOUBLE_SIZE_ON_64_BIT(temp_s6->persistentSeqMem); + sPersistentCommonPoolSplit.wantBank = DOUBLE_SIZE_ON_64_BIT(temp_s6->persistentBankMem); sPersistentCommonPoolSplit.wantUnused = temp_s6->unk_18; persistent_pools_init(&sPersistentCommonPoolSplit); - sTemporaryCommonPoolSplit.wantSeq = temp_s6->temporarySeqMem; - sTemporaryCommonPoolSplit.wantBank = temp_s6->temporaryBankMem; + sTemporaryCommonPoolSplit.wantSeq = DOUBLE_SIZE_ON_64_BIT(temp_s6->temporarySeqMem); + sTemporaryCommonPoolSplit.wantBank = DOUBLE_SIZE_ON_64_BIT(temp_s6->temporaryBankMem); sTemporaryCommonPoolSplit.wantUnused = temp_s6->unk_24; temporary_pools_init(&sTemporaryCommonPoolSplit); reset_bank_and_seq_load_status(); diff --git a/src/audio/load.c b/src/audio/load.c index 4ed6ed5a4..0807407ae 100644 --- a/src/audio/load.c +++ b/src/audio/load.c @@ -129,9 +129,9 @@ void audio_dma_copy_async(uintptr_t devAddr, void* vAddr, size_t nbytes, OSMesgQ * Performs a partial asynchronous (normal priority) DMA copy. This is limited * to 0x1000 bytes transfer at once. */ -void audio_dma_partial_copy_async(uintptr_t* devAddr, u8** vAddr, size_t* remaining, OSMesgQueue* queue, +void audio_dma_partial_copy_async(uintptr_t* devAddr, u8** vAddr, ssize_t* remaining, OSMesgQueue* queue, OSIoMesg* mesg) { - size_t transfer = (*remaining >= 0x1000 ? 0x1000 : *remaining); + ssize_t transfer = (*remaining >= 0x1000 ? 0x1000 : *remaining); *remaining -= transfer; osInvalDCache(*vAddr, transfer); osPiStartDma(mesg, OS_MESG_PRI_NORMAL, OS_READ, *devAddr, *vAddr, transfer, queue); @@ -174,7 +174,7 @@ void* dma_sample_data(uintptr_t devAddr, u32 size, s32 arg2, u8* dmaIndexRef) { u32 transfer; u32 i; u32 dmaIndex; - size_t bufferPos; + ssize_t bufferPos; UNUSED u32 pad; if (arg2 != 0 || *dmaIndexRef >= sSampleDmaListSize1) { diff --git a/src/audio/load.h b/src/audio/load.h index e818e6806..6697a3339 100644 --- a/src/audio/load.h +++ b/src/audio/load.h @@ -25,7 +25,7 @@ struct SharedDma { void audio_init(void); void audio_dma_copy_immediate(u8* devAddr, void* vAddr, size_t nbytes); void audio_dma_copy_async(uintptr_t, void*, size_t, OSMesgQueue*, OSIoMesg*); -void audio_dma_partial_copy_async(uintptr_t*, u8**, size_t*, OSMesgQueue*, OSIoMesg*); +void audio_dma_partial_copy_async(uintptr_t*, u8**, ssize_t*, OSMesgQueue*, OSIoMesg*); void decrease_sample_dma_ttls(void); void* dma_sample_data(uintptr_t, u32, s32, u8*); void func_800BB030(s32); diff --git a/src/menu_items.c b/src/menu_items.c index 9987d17ef..e7dd111cb 100644 --- a/src/menu_items.c +++ b/src/menu_items.c @@ -3294,7 +3294,7 @@ Gfx* draw_box_wide_right(Gfx* displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lr return displayListHead; } -// Renders pause background +// Renders pause background and lakitu tow transition black fade in/out Gfx* draw_box_wide_pause_background(Gfx* displayListHead, s32 ulx, s32 uly, s32 lrx, s32 lry, u32 red, u32 green, u32 blue, u32 alpha) { red &= 0xFF; @@ -4641,9 +4641,12 @@ void func_8009CA6C(s32 arg0) { } } +// Lakitu tow transition out of black void func_8009CBE4(s32 arg0, s32 arg1, s32 arg2) { RGBA16* color; s16 x, y, w, h; + s32 leftEdge; + s32 rightEdge; UNUSED s32 pad[3]; struct UnkStruct_800DC5EC* unk; struct UnkStruct_8018E7E8 *size, *start; @@ -4670,8 +4673,31 @@ void func_8009CBE4(s32 arg0, s32 arg1, s32 arg2) { h = unk->screenHeight; } color = &D_800E7AE8[arg2]; - gDisplayListHead = draw_box_wide(gDisplayListHead, x - (w / 2), y - (h / 2), (w / 2) + x, (h / 2) + y, color->red, - color->green, color->blue, 0xFF - (D_8018E7D0[arg0] * 0xFF / D_8018E7B8[arg0])); + + switch(gScreenModeSelection) { + case SCREEN_MODE_1P: + case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: + gDisplayListHead = draw_box_wide(gDisplayListHead, x - (w / 2), y - (h / 2), (w / 2) + x, (h / 2) + y, color->red, + color->green, color->blue, 0xFF - (D_8018E7D0[arg0] * 0xFF / D_8018E7B8[arg0])); + break; + case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: + gDisplayListHead = draw_box_wide(gDisplayListHead, x - (w / 2), y - (h / 2), (w / 2) + x, (h / 2) + y, color->red, + color->green, color->blue, 0xFF - (D_8018E7D0[arg0] * 0xFF / D_8018E7B8[arg0])); + break; + case SCREEN_MODE_3P_4P_SPLITSCREEN: + if ((arg0 == 0) || (arg0 == 2)) { + leftEdge = OTRGetDimensionFromLeftEdge(0); + gDisplayListHead = + draw_box_wide_pause_background(gDisplayListHead, leftEdge - (x - (w / 2)), y - (h / 2), (w / 2) + x, (h / 2) + y, color->red, + color->green, color->blue, 0xFF - (D_8018E7D0[arg0] * 0xFF / D_8018E7B8[arg0])); + } else if ((arg0 == 1) || (arg0 == 3)) { + rightEdge = OTRGetDimensionFromRightEdge(SCREEN_WIDTH); + gDisplayListHead = + draw_box_wide_pause_background(gDisplayListHead, x - (w / 2), y - (h / 2), rightEdge + ((w / 2) + x), (h / 2) + y, color->red, + color->green, color->blue, 0xFF - (D_8018E7D0[arg0] * 0xFF / D_8018E7B8[arg0])); + } + break; + } if ((arg1 == 0) && (D_8018E7D0[arg0] += 1, (D_8018E7D0[arg0] >= D_8018E7B8[arg0]))) { if (gGamestate == 4) { @@ -5045,6 +5071,7 @@ void func_8009CE64(s32 arg0) { } } +// Lakitu tow transition to black void func_8009D77C(s32 arg0, s32 arg1, s32 arg2) { s16 var_ra; s16 var_t3; @@ -5057,6 +5084,8 @@ void func_8009D77C(s32 arg0, s32 arg1, s32 arg2) { RGBA16* temp_v0_2; s32 sp44; UNUSED s32 stackPadding0; + s32 leftEdge; + s32 rightEdge; if ((gModeSelection == 0) || (gModeSelection == 1)) { var_t3 = D_8018E7E8[arg0].x; @@ -5086,8 +5115,33 @@ void func_8009D77C(s32 arg0, s32 arg1, s32 arg2) { someMath0 += var_t3; someMath1 = temp_t8; someMath1 += var_t4; - gDisplayListHead = draw_box_wide(gDisplayListHead, var_t3 - temp_v1, var_t4 - temp_t8, someMath0, someMath1, - temp_v0_2->red, temp_v0_2->green, temp_v0_2->blue, var_t2); + + switch(gScreenModeSelection) { + case SCREEN_MODE_1P: + case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: + gDisplayListHead = draw_box_wide(gDisplayListHead, var_t3 - temp_v1, var_t4 - temp_t8, someMath0, someMath1, + temp_v0_2->red, temp_v0_2->green, temp_v0_2->blue, var_t2); + break; + case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: + gDisplayListHead = draw_box_wide(gDisplayListHead, var_t3 - temp_v1, var_t4 - temp_t8, someMath0, someMath1, + temp_v0_2->red, temp_v0_2->green, temp_v0_2->blue, var_t2); + break; + case SCREEN_MODE_3P_4P_SPLITSCREEN: + if ((arg0 == 0) || (arg0 == 2)) { + leftEdge = OTRGetDimensionFromLeftEdge(0); + gDisplayListHead = + draw_box_wide_pause_background(gDisplayListHead, leftEdge - (var_t3 - temp_v1), var_t4 - temp_t8, someMath0, someMath1, + temp_v0_2->red, temp_v0_2->green, temp_v0_2->blue, var_t2); + + } else if ((arg0 == 1) || (arg0 == 3)) { + rightEdge = OTRGetDimensionFromRightEdge(SCREEN_WIDTH); + gDisplayListHead = + draw_box_wide_pause_background(gDisplayListHead, var_t3 - temp_v1, var_t4 - temp_t8, rightEdge + someMath0, someMath1, + temp_v0_2->red, temp_v0_2->green, temp_v0_2->blue, var_t2); + } + break; + } + if (arg1 == 0) { D_8018E7D0[arg0]++; if ((D_8018E7B8[arg0] + 1) < D_8018E7D0[arg0]) { @@ -5104,6 +5158,7 @@ void func_8009D978(s32 arg0, s32 arg1) { func_8009D77C(arg0, arg1, 1); } +// Lakitu tow transition box show up for 1 frame; full black void func_8009D998(s32 arg0) { s16 var_t0; s16 var_t1; @@ -5113,6 +5168,8 @@ void func_8009D998(s32 arg0) { s32 temp_v1; s32 someMath0; s32 someMath1; + s32 leftEdge; + s32 rightEdge; if ((gModeSelection == 0) || (gModeSelection == 1)) { var_t0 = D_8018E7E8[arg0].x; @@ -5137,8 +5194,30 @@ void func_8009D998(s32 arg0) { someMath0 += var_t0; someMath1 = temp_v1; someMath1 += var_t1; - gDisplayListHead = - draw_box_wide(gDisplayListHead, var_t0 - temp_v0, var_t1 - temp_v1, someMath0, someMath1, 0, 0, 0, 0x000000FF); + + switch(gScreenModeSelection) { + case SCREEN_MODE_1P: + case SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL: + gDisplayListHead = + draw_box_wide(gDisplayListHead, var_t0 - temp_v0, var_t1 - temp_v1, someMath0, someMath1, 0, 0, 0, 0x000000FF); + break; + case SCREEN_MODE_2P_SPLITSCREEN_VERTICAL: + gDisplayListHead = + draw_box_wide(gDisplayListHead, var_t0 - temp_v0, var_t1 - temp_v1, someMath0, someMath1, 0, 0, 0, 0x000000FF); + break; + case SCREEN_MODE_3P_4P_SPLITSCREEN: + if ((arg0 == 0) || (arg0 == 2)) { + leftEdge = OTRGetDimensionFromLeftEdge(0); + gDisplayListHead = + draw_box_wide_pause_background(gDisplayListHead, leftEdge - temp_v0, var_t1 - temp_v1, someMath0, someMath1, 0, 0, 0, 0x000000FF); + + } else if ((arg0 == 1) || (arg0 == 3)) { + rightEdge = OTRGetDimensionFromRightEdge(SCREEN_WIDTH); + gDisplayListHead = + draw_box_wide_pause_background(gDisplayListHead, var_t0 - temp_v0, var_t1 - temp_v1, rightEdge + someMath0, someMath1, 0, 0, 0, 0x000000FF); + } + break; + } } void func_8009DAA8(void) { @@ -6702,7 +6781,7 @@ void func_800A15EC(MenuItem* arg0) { s16 courseId = gCupCourseOrder[(arg0->type - 0x7C) / 4][(arg0->type - 0x7C) % 4]; gDisplayListHead = func_8009C204(gDisplayListHead, segmented_to_virtual_dupe(D_800E7D74[courseId]), arg0->column, arg0->row, 2); - gDisplayListHead = draw_box_wide(gDisplayListHead, arg0->column, arg0->row + 0x27, arg0->column + 0x40, + gDisplayListHead = draw_box(gDisplayListHead, arg0->column, arg0->row + 0x27, arg0->column + 0x40, arg0->row + 0x30, 0, 0, 0, 0xFF); gDisplayListHead = func_8009C204(gDisplayListHead, segmented_to_virtual_dupe(D_800E7DC4[courseId]), arg0->column, arg0->row + 0x27, 3); @@ -9222,7 +9301,7 @@ void func_800A8CA4(MenuItem* arg0) { // Wut? if ((var_s0 != (temp_v0->param1 % 4)) != 0) { gDisplayListHead = - draw_box_wide(gDisplayListHead, D_800E7208[var_s0][0].column + temp_s2, + draw_box(gDisplayListHead, D_800E7208[var_s0][0].column + temp_s2, D_800E7208[var_s0][0].row + temp_s3, D_800E7208[var_s0][1].column + temp_s2, D_800E7208[var_s0][1].row + temp_s3, 0, 0, 0, 0x00000064); } diff --git a/src/menu_items.h b/src/menu_items.h index d42346698..61e08d5b6 100644 --- a/src/menu_items.h +++ b/src/menu_items.h @@ -191,7 +191,7 @@ enum MENU_ITEM_TYPE { MENU_ITEM_TYPE_079, MENU_ITEM_TYPE_07A, MENU_ITEM_TYPE_07B, - MENU_ITEM_TYPE_07C, + MENU_ITEM_TYPE_07C, // Courses for data menu MENU_ITEM_TYPE_07D, MENU_ITEM_TYPE_07E, MENU_ITEM_TYPE_07F, @@ -206,7 +206,7 @@ enum MENU_ITEM_TYPE { MENU_ITEM_TYPE_088, MENU_ITEM_TYPE_089, MENU_ITEM_TYPE_08A, - MENU_ITEM_TYPE_08B, + MENU_ITEM_TYPE_08B, // Courses for data menu end MENU_ITEM_TYPE_08C, MENU_ITEM_TYPE_08D, MENU_ITEM_TYPE_096 = 0x96, diff --git a/src/render_objects.c b/src/render_objects.c index 83c16b56b..409bab57c 100644 --- a/src/render_objects.c +++ b/src/render_objects.c @@ -1659,6 +1659,52 @@ void render_texture_rectangle_wide(s32 x, s32 y, s32 width, s32 height, s32 arg4 // 1 << 10); } +void render_texture_rectangle_wide_left(s32 x, s32 y, s32 width, s32 height, s32 arg4, s32 arg5, s32 arg6) { + s32 xh = (((x + width) - 1)); + s32 yh = (((y + height) - 1) << 2); + s32 xl = ((x)); + s32 yl = y << 2; + + s32 xh2 = (((x + width))); + s32 yh2 = ((y + height) << 2); + + // if center of image is to the left side of the screen then align left, + // otherwise align right + + s32 coordX = 0; + s32 coordX2 = 0; + + switch (gScreenModeSelection) { + case SCREEN_MODE_3P_4P_SPLITSCREEN: + if (gPlayerCount == 3) { + // Center item in area of screen + s32 center = (s32) ((OTRGetDimensionFromLeftEdge(SCREEN_WIDTH) - SCREEN_WIDTH) / 2) + + ((SCREEN_WIDTH / 4) + (SCREEN_WIDTH / 2)); + s32 coordX = (s32) (center - (width / 2)) << 2; + s32 coordX2 = (s32) (center + (width / 2)) << 2; + gSPWideTextureRectangle(gDisplayListHead++, coordX, yl, coordX2, yh2, G_TX_RENDERTILE, arg4 << 5, + (arg5 << 5), 1 << 10, 1 << 10); + } else { // 4 players + s32 renderWidth = SCREEN_WIDTH; + s32 center = (renderWidth / 2); + coordX = (s32) (center - (width / 2)) << 2; + coordX2 = (s32) (center + (width / 2)) << 2; + gSPWideTextureRectangle(gDisplayListHead++, coordX, yl, coordX2, yh2, G_TX_RENDERTILE, arg4 << 5, + (arg5 << 5), 1 << 10, 1 << 10); + } + break; + default: + coordX = (s32) OTRGetDimensionFromLeftEdge(xl) << 2; + coordX2 = (s32) OTRGetDimensionFromLeftEdge(xh2) << 2; + gSPWideTextureRectangle(gDisplayListHead++, coordX, yl, coordX2, yh2, G_TX_RENDERTILE, arg4 << 5, + (arg5 << 5), 1 << 10, 1 << 10); + break; + } + + // gSPTextureRectangle(gDisplayListHead++, xl, yl, xh2, yh2, G_TX_RENDERTILE, arg4 << 5, (arg5 << 5), 1 << 10, + // 1 << 10); +} + void render_texture_rectangle_wrap(s32 x, s32 y, s32 width, s32 height, s32 mode) { // (0, 0) means texture coordinates will be rendered from the top left corner render_texture_rectangle(x, y, width, height, 0, 0, mode); @@ -1714,6 +1760,30 @@ void func_8004B97C_wide(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { } } +void func_8004B97C_wide_left(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + UNUSED s32 pad[2]; + s32 sp2C; + s32 var_a1; + s32 var_v0; + s32 var_v1; + + if ((-arg2 < arg0) && (-arg3 < arg1)) { + var_v0 = 0; + var_v1 = 0; + sp2C = arg0; + var_a1 = arg1; + if (arg0 < 0) { + var_v1 = -arg0; + sp2C = 0; + } + if (arg1 < 0) { + var_v0 = -arg1; + var_a1 = 0; + } + render_texture_rectangle_wide_left(sp2C, var_a1, arg2 - var_v1, arg3 - var_v0, var_v1, var_v0, arg4); + } +} + // extra mode minimap void func_8004BA08(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { UNUSED s32 pad[2]; @@ -1904,6 +1974,27 @@ void func_8004C268(u32 arg0, u32 arg1, u8* texture, u32 width, u32 arg4, u32 hei } } +void func_8004C268_wide(u32 arg0, u32 arg1, u8* texture, u32 width, u32 arg4, u32 height, s32 arg6) { + s32 i; + u8* img2; + + arg0 -= (width / 2); + arg1 -= (arg4 / 2); + img2 = texture; + + for (i = 0; (u32) i < (arg4 / height); i++) { + load_texture_block_rgba16_mirror(img2, width, height); + func_8004B97C_wide_left(arg0, arg1, width, height, arg6); +//! @todo fakematch? +#ifdef AVOID_UB + img2 += (width * height) * 2; +#else + img2 += (width * height) * 2 ^ ((arg4 / height) * 0); +#endif + arg1 += height; + } +} + UNUSED void func_8004C354() { } @@ -2001,6 +2092,12 @@ void func_8004C9D8(s32 arg0, s32 arg1, s32 arg2, u8* texture, s32 arg4, s32 arg5 func_8004C268(arg0, arg1, texture, arg4, arg5, arg7, 1); } +void func_8004C9D8_wide(s32 arg0, s32 arg1, s32 arg2, u8* texture, s32 arg4, s32 arg5, UNUSED s32 arg6, s32 arg7) { + gSPDisplayList(gDisplayListHead++, D_0D007F38); + set_transparency(arg2); + func_8004C268_wide(arg0, arg1, texture, arg4, arg5, arg7, 1); +} + void func_8004CA58(s32 arg0, s32 arg1, f32 arg2, u8* texture, s32 arg4, s32 arg5) { gSPDisplayList(gDisplayListHead++, D_0D007F78); load_texture_block_rgba16_mirror(texture, arg4, arg5); @@ -2584,15 +2681,15 @@ void func_8004EB38(s32 playerId) { func_8004F950((s32) temp_s0->lap2CompletionTimeX, (s32) temp_s0->timerY, 0x00000050, (s32) temp_s0->someTimer); } if ((u8) temp_s0->unk_7E != 0) { - func_8004C9D8((s32) temp_s0->lapAfterImage1X, temp_s0->lapY + 3, 0x00000080, (u8*) common_texture_hud_lap, + func_8004C9D8_wide((s32) temp_s0->lapAfterImage1X, temp_s0->lapY + 3, 0x00000080, (u8*) common_texture_hud_lap, 0x00000020, 8, 0x00000020, 8); - func_8004C9D8(temp_s0->lapAfterImage1X + 0x1C, (s32) temp_s0->lapY, 0x00000080, + func_8004C9D8_wide(temp_s0->lapAfterImage1X + 0x1C, (s32) temp_s0->lapY, 0x00000080, (u8*) gHudLapTextures[temp_s0->alsoLapCount], 0x00000020, 0x00000010, 0x00000020, 0x00000010); } if ((u8) temp_s0->unk_7F != 0) { - func_8004C9D8((s32) temp_s0->lapAfterImage2X, temp_s0->lapY + 3, 0x00000050, (u8*) common_texture_hud_lap, + func_8004C9D8_wide((s32) temp_s0->lapAfterImage2X, temp_s0->lapY + 3, 0x00000050, (u8*) common_texture_hud_lap, 0x00000020, 8, 0x00000020, 8); - func_8004C9D8(temp_s0->lapAfterImage2X + 0x1C, (s32) temp_s0->lapY, 0x00000050, + func_8004C9D8_wide(temp_s0->lapAfterImage2X + 0x1C, (s32) temp_s0->lapY, 0x00000050, (u8*) gHudLapTextures[temp_s0->alsoLapCount], 0x00000020, 0x00000010, 0x00000020, 0x00000010); } } diff --git a/src/render_objects.h b/src/render_objects.h index bc11ee626..ee13cb47c 100644 --- a/src/render_objects.h +++ b/src/render_objects.h @@ -292,7 +292,6 @@ void func_8004E800(s32); void func_8004E998(s32); void func_8004EB30(s32); void func_8004EB38(s32); -void func_8004EB38(s32); void func_8004ED40(s32); void func_8004EE54(s32);