From 05fe65d6e8f03afbf796a35fb0e2942dc393ea06 Mon Sep 17 00:00:00 2001 From: mariob92 <21146795-mariob92@users.noreply.gitlab.com> Date: Tue, 15 Oct 2024 22:14:17 +0200 Subject: [PATCH] src/core1: more documentation and renaming neue Datei: include/core1/framebufferdraw.h neue Datei: include/core1/sprite.h umbenannt: src/core1/code_ABB0.c -> src/core1/framebufferdraw.c umbenannt: src/core1/code_13680.c -> src/core1/sprite.c umbenannt: src/core1/code_3A70.c -> src/core1/stub_3A70.c --- decompressed.pal.yaml | 14 +- decompressed.us.v10.yaml | 14 +- include/core1/core1.h | 6 + include/core1/framebufferdraw.h | 28 ++ include/core1/sprite.h | 11 + include/functions.h | 2 - src/core1/code_0.c | 4 - src/core1/code_13680.c | 33 -- src/core1/{code_ABB0.c => framebufferdraw.c} | 313 +++++++++---------- src/core1/sprite.c | 28 ++ src/core1/{code_3A70.c => stub_3A70.c} | 112 +++---- src/core2/code_5C240.c | 4 +- src/core2/code_5C870.c | 2 +- src/core2/code_5DBC0.c | 4 +- src/core2/code_6DA30.c | 4 +- src/core2/code_A5BC0.c | 2 +- src/core2/code_AEDA0.c | 2 +- src/core2/code_B3A80.c | 2 +- src/core2/code_C0E60.c | 2 +- src/core2/gc/pauseMenu.c | 8 +- src/core2/gc/zoombox.c | 2 +- src/core2/particle.c | 6 +- 22 files changed, 306 insertions(+), 297 deletions(-) create mode 100644 include/core1/framebufferdraw.h create mode 100644 include/core1/sprite.h delete mode 100644 src/core1/code_13680.c rename src/core1/{code_ABB0.c => framebufferdraw.c} (70%) create mode 100644 src/core1/sprite.c rename src/core1/{code_3A70.c => stub_3A70.c} (73%) diff --git a/decompressed.pal.yaml b/decompressed.pal.yaml index 1ce21c84..f46c6264 100644 --- a/decompressed.pal.yaml +++ b/decompressed.pal.yaml @@ -155,13 +155,13 @@ segments: - [0xF40850, c, stub_2FA0] - [0xF40A70, c, initthread] - [0xF40B00, c, code_3250] - - [0xF41320, c, code_3A70] + - [0xF41320, c, stub_3A70] - [0xF42F00, c, code_5650] - [0xF44940, c, code_7090] - [0xF44b60, c, code_72B0] - [0xF45810, c, code_7F60] - [0xF46500, c, code_8C50] - - [0xF475C0, c, code_ABB0] + - [0xF475C0, c, framebufferdraw] - [0xF49870, c, code_CE60] - [0xF4AD70, c, vimgr] - [0xF4B4C0, c, viewport] @@ -169,7 +169,7 @@ segments: - [0xF4E490, c, code_11AC0] - [0xF4F890, c, rumblemanager] - [0xF50010, c, stub_13640] - - [0xF50050, c, code_13680] + - [0xF50050, c, sprite] - [0xF500a0, c, overlaymanager] - [0xF50360, c, code_13990] - [0xF51FC0, hasm, code_155F0] @@ -367,13 +367,13 @@ segments: - [0xF74A10, bin, data_37E30] #unreferenced - [0xF74A20, .data, stub_2FA0] - [0xF74A30, .data, code_3250] - - [0xF74A40, .data, code_3A70] + - [0xF74A40, .data, stub_3A70] - [0xF74A80, .data, code_5650] - [0xF74AA0, .data, code_7090] - [0xF74AB0, bin, data_37ED0] #unreferenced - [0xF74AC0, .data, code_7F60] - [0xF74AD0, .data, code_8C50] - - [0xF74C60, .data, code_ABB0] + - [0xF74C60, .data, framebufferdraw] - [0xF74C70, .data, code_CE60] - [0xF74CE0, .data, vimgr] - [0xF74DD0, .data, viewport] @@ -411,7 +411,7 @@ segments: - [0xF76680, .data, io/vimodentsclan1] - [0xF766D0, .rodata, code_1D00] - [0xF766F0, .rodata, code_3250] - - [0xF76700, .rodata, code_3A70] + - [0xF76700, .rodata, stub_3A70] - [0xF76710, .rodata, code_5650] - [0xF76770, .rodata, code_72B0] - [0xF76790, .rodata, code_7F60] @@ -463,7 +463,7 @@ segments: - [0xF791D0, .bss, code_7090] - [0xF791D0, .bss, code_72B0] - [0xF791D0, .bss, code_8C50] - - [0xF791D0, .bss, code_ABB0] + - [0xF791D0, .bss, framebufferdraw] - [0xF791D0, .bss, code_CE60] - [0xF791D0, .bss, vimgr] - [0xF791D0, .bss, viewport] diff --git a/decompressed.us.v10.yaml b/decompressed.us.v10.yaml index a1831358..b6ce5ccb 100644 --- a/decompressed.us.v10.yaml +++ b/decompressed.us.v10.yaml @@ -155,14 +155,14 @@ segments: - [0xF1C1F0, c, stub_2FA0] #DONE - [0xF1C410, c, initthread] #DONE - [0xF1C4A0, c, code_3250] #DONE - - [0xF1CCC0, c, code_3A70] #DONE + - [0xF1CCC0, c, stub_3A70] #DONE - [0xF1E8A0, c, code_5650] - [0xF202E0, c, code_7090] #DONE - [0xF20500, c, code_72B0] #DONE - [0xF211B0, c, code_7F60] #DONE - [0xF21EA0, c, code_8C50] #DONE - [0xF22F80, c, code_9D30] #DONE - - [0xF23E00, c, code_ABB0] #DONE + - [0xF23E00, c, framebufferdraw] #DONE - [0xF260B0, c, code_CE60] #DONE - [0xF275B0, c, vimgr] #DONE - [0xF27D40, c, viewport] #DONE @@ -170,7 +170,7 @@ segments: - [0xF2AD10, c, code_11AC0] #DONE - [0xF2C160, c, rumblemanager] #DONE - [0xF2C890, c, stub_13640] #DONE - - [0xF2C8D0, c, code_13680] #DONE + - [0xF2C8D0, c, sprite] #DONE - [0xF2C920, c, overlaymanager] #DONE - [0xF2CBE0, c, code_13990] - [0xF2E840, hasm, code_155F0] #DONE @@ -367,14 +367,14 @@ segments: - [0xF51080, bin, data_37E30] #unreferenced - [0xF51090, .data, stub_2FA0] - [0xF510A0, .data, code_3250] - - [0xF510B0, .data, code_3A70] + - [0xF510B0, .data, stub_3A70] - [0xF510F0, .data, code_5650] - [0xF51110, .data, code_7090] - [0xF51120, bin, data_37ED0] #unreferenced - [0xF51130, .data, code_7F60] - [0xF51140, .data, code_8C50] - [0xF51280, .data, code_9D30] - - [0xF51430, .data, code_ABB0] + - [0xF51430, .data, framebufferdraw] - [0xF51440, .data, code_CE60] - [0xF514B0, .data, vimgr] - [0xF51550, .data, viewport] @@ -412,7 +412,7 @@ segments: - [0xF52DB0, .data, io/vimodentsclan1] - [0xF52E50, .rodata, code_1D00] - [0xF52E70, .rodata, code_3250] - - [0xF52E80, .rodata, code_3A70] + - [0xF52E80, .rodata, stub_3A70] - [0xF52E90, .rodata, code_5650] - [0xF52EF0, .rodata, code_72B0] - [0xF52F10, .rodata, code_7F60] @@ -464,7 +464,7 @@ segments: - [0xF55960, .bss, code_7090] - [0xF55960, .bss, code_72B0] - [0xF55960, .bss, code_8C50] - - [0xF55960, .bss, code_ABB0] + - [0xF55960, .bss, framebufferdraw] - [0xF55960, .bss, code_CE60] - [0xF55960, .bss, vimgr] - [0xF55960, .bss, viewport] diff --git a/include/core1/core1.h b/include/core1/core1.h index 928f6493..5fb6b7b6 100644 --- a/include/core1/core1.h +++ b/include/core1/core1.h @@ -4,14 +4,18 @@ #include #include "bool.h" #include "enums.h" +#include "structs.h" +#include "prop.h" #include "core1/eeprom.h" +#include "core1/framebufferdraw.h" #include "core1/lookup.h" #include "core1/main.h" #include "core1/mem.h" #include "core1/pfsmanager.h" #include "core1/rarezip.h" #include "core1/sns.h" +#include "core1/sprite.h" #include "core1/ucode.h" #include "core1/viewport.h" #include "core1/vimgr.h" @@ -19,6 +23,8 @@ void mlMtx_apply_vec3f(f32[3], f32[3]); void func_80252C08(f32 arg0[3], f32 arg1[3], f32 scale, f32 arg3[3]); void glcrc_calc_checksum(void *start, void *end, u32 checksum[2]); +f32 ml_cos_deg(f32); +f32 ml_sin_deg(f32); /* src/core1/depthbuffer.c */ diff --git a/include/core1/framebufferdraw.h b/include/core1/framebufferdraw.h new file mode 100644 index 00000000..1b625218 --- /dev/null +++ b/include/core1/framebufferdraw.h @@ -0,0 +1,28 @@ +#ifndef BANJO_KAZOOIE_CORE1_FRAMEBUFFERDRAW_H +#define BANJO_KAZOOIE_CORE1_FRAMEBUFFERDRAW_H + +void framebufferdraw_drawSpriteCI4(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled); +void framebufferdraw_drawSpriteCI8(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled); +void framebufferdraw_drawSpriteRGBA16(s32 x, s32 y, BKSprite *sprite, s32 frame, bool alpha_enabled); +void framebufferdraw_drawSpriteI4(s32 x, s32 y, BKSprite *sprite, s32 frame, bool aplha_enabled); +void framebufferdraw_drawSpriteIA4(s32 x, s32 y, BKSprite *sprite, s32 frame, bool aplha_enabled); +void framebufferdraw_drawSpriteI8(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled); +void framebufferdraw_drawSpriteIA8(s32 x, s32 y, BKSprite *sprite, s32 frame, bool alpha_enabled); +void framebufferdraw_drawSpriteRGBA32(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled); +void framebufferdraw_stub1(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void framebufferdraw_stub2(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void framebufferdraw_drawTexture_CI4(s32 x, s32 y, void *tmem, s32 w, s32 h, bool alpha_enabled); +void framebufferdraw_draw(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled); +void framebufferdraw_func_80249DE0(s32 x, s32 y, s16 *arg2, s32 arg3, s32 arg4); +void framebufferdraw_func_80249F34(s32 x, s32 y, Struct84s* maskList, s32 maskIndex, s32 mX, s32 mY, s32 mW, s32 mH, s32 maskColor, s32 mStride, bool dim, s32 replacementColor); +void framebufferdraw_drawGrid(s32 x, s32 y, s32 arg2, s32 arg3, s32 horz_spacing, s32 vert_spacing); +void framebufferdraw_setPixel(s32 x, s32 y); +void framebufferdraw_drawOutline(s32 x, s32 y, s32 w, s32 h); +void framebufferdraw_func_8024A564(s32 x, s32 y, u16 *arg2, s32 arg3, s32 arg4, f32 arg5, f32 arg6); +void framebufferdraw_drawRect(s32 x, s32 y, s32 w, s32 h); +void framebufferdraw_resetPrimColorAndBuffer(void); +void framebufferdraw_setPrimColor(s32 r, s32 g, s32 b); +void framebufferdraw_setBufferIndex(s32 buffer_indx); +s32 framebufferdraw_getBufferIndex(void); + +#endif diff --git a/include/core1/sprite.h b/include/core1/sprite.h new file mode 100644 index 00000000..60cf77ec --- /dev/null +++ b/include/core1/sprite.h @@ -0,0 +1,11 @@ +#ifndef BANJO_KAZOOIE_CORE1_SPRITE_H +#define BANJO_KAZOOIE_CORE1_SPRITE_H + +u32 sprite_getUnk8(BKSprite *this); +u32 sprite_getUnkA(BKSprite *this); +u32 sprite_getUnk6(BKSprite *this); +u32 sprite_getUnk4(BKSprite *this); +s32 sprite_getFrameCount(BKSprite *this); +BKSpriteFrame *sprite_getFramePtr(BKSprite *this, u32 frame_id); + +#endif diff --git a/include/functions.h b/include/functions.h index 7fafa89c..576a6cdd 100644 --- a/include/functions.h +++ b/include/functions.h @@ -57,8 +57,6 @@ void ml_vec3f_scale_copy(f32 dst[3], f32 src[3], f32 scale); float gu_sqrtf(float val); -BKSpriteFrame *spriteGetFramePtr(BKSprite *, u32); - bool baanim_isAt(f32); void baanim_playForDuration_once(enum asset_e anim_id, f32 duration); void baanim_setEnd(f32); diff --git a/src/core1/code_0.c b/src/core1/code_0.c index 3b675087..c3dabb3d 100644 --- a/src/core1/code_0.c +++ b/src/core1/code_0.c @@ -7,10 +7,6 @@ #define MAIN_THREAD_STACK_SIZE 0x17F0 - -void setBootMap(enum map_e); -void func_8023DFF0(s32); - #if VERSION == VERSION_PAL extern s32 D_80000300; #endif diff --git a/src/core1/code_13680.c b/src/core1/code_13680.c deleted file mode 100644 index f2b8c503..00000000 --- a/src/core1/code_13680.c +++ /dev/null @@ -1,33 +0,0 @@ -#include -#include "core1/core1.h" - -#include "functions.h" -#include "variables.h" - - -u32 func_802510A0(BKSprite *this){ - return this->unk8; -} - -u32 func_802510A8(BKSprite *this){ - return this->unkA; -} - -u32 func_802510B0(BKSprite *this){ - return this->unk6; -} - -u32 func_802510B8(BKSprite *this){ - return this->unk4; -} - -s32 spriteGetFrameCount(BKSprite *this){ - return this->frameCnt; -} - -BKSpriteFrame *spriteGetFramePtr(BKSprite *this, u32 frame) -{ - BKSpriteFrame * new_var; - new_var = this->offsets[frame] + ((s32) ((*this).offsets + this->frameCnt)); - return new_var; -} diff --git a/src/core1/code_ABB0.c b/src/core1/framebufferdraw.c similarity index 70% rename from src/core1/code_ABB0.c rename to src/core1/framebufferdraw.c index f1788cd8..cd867003 100644 --- a/src/core1/code_ABB0.c +++ b/src/core1/framebufferdraw.c @@ -1,8 +1,5 @@ #include #include "core1/core1.h" -#include "functions.h" -#include "variables.h" - #define IA8_I(ia) ((ia) >> 4) #define IA8_A(ia) ((ia) & 0xF) @@ -15,19 +12,12 @@ #define C5_TO_C8(c5) ((c5) << 3) #define C8_TO_C5(c5) ((c5) >> 3) +static s32 sPrimColor_r; +static s32 sPrimColor_g; +static s32 sPrimColor_b; +static s32 sBufferIndex; -void func_8024A3C8(s32 x, s32 y); -void draw_prim_rect(s32 x, s32 y, s32 w, s32 h); -void set_prim_color(s32 r, s32 g, s32 b); -void func_8024A85C(s32 buffer_indx); - -/* .bss */ -s32 D_802806E0; -s32 D_802806E4; -s32 D_802806E8; -s32 D_802806EC; - -void draw_sprite_ci4(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled) +void framebufferdraw_draw_CI4(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled) { BKSpriteFrame *sprite_frame; s32 palette_offset; @@ -46,11 +36,11 @@ void draw_sprite_ci4(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enable s32 color1; s32 color2; - framebuffer = gFramebuffers[D_802806EC]; - sprite_frame = spriteGetFramePtr(sprite, (u32) frame); + framebuffer = gFramebuffers[sBufferIndex]; + sprite_frame = sprite_getFramePtr(sprite, (u32) frame); if (!alpha_enabled){ - set_prim_color(0, 0, 0x80); - draw_prim_rect(x, y, sprite_frame->w, sprite_frame->h); + framebufferdraw_setPrimColor(0, 0, 0x80); + framebufferdraw_drawRect(x, y, sprite_frame->w, sprite_frame->h); } //align palette @@ -101,7 +91,7 @@ void draw_sprite_ci4(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enable } } -void draw_sprite_ci8(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled) +void framebufferdraw_draw_CI8(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled) { static s32 D_80275C00 = 0; u16 *palette; @@ -122,11 +112,11 @@ void draw_sprite_ci8(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enable if (D_80275C00 == 0xA) { D_80275C00 = 0; } - framebuffer = gFramebuffers[D_802806EC]; - sprite_frame = spriteGetFramePtr(sprite, (u32) frame); + framebuffer = gFramebuffers[sBufferIndex]; + sprite_frame = sprite_getFramePtr(sprite, (u32) frame); if (!alpha_enabled){ - set_prim_color(0, 0, 0x80); - draw_prim_rect(x, y, sprite_frame->w, sprite_frame->h); + framebufferdraw_setPrimColor(0, 0, 0x80); + framebufferdraw_drawRect(x, y, sprite_frame->w, sprite_frame->h); } palette = (u16 *) (sprite_frame + 1); @@ -175,7 +165,7 @@ void draw_sprite_ci8(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enable } -void draw_sprite_rgba16(s32 x, s32 y, BKSprite *sprite, s32 frame, bool alpha_enabled) { +void framebufferdraw_draw_RGBA16(s32 x, s32 y, BKSprite *sprite, s32 frame, bool alpha_enabled) { BKSpriteFrame *sprite_ptr; BKSpriteTextureBlock *chunk_ptr; s16 *tmem; @@ -188,11 +178,11 @@ void draw_sprite_rgba16(s32 x, s32 y, BKSprite *sprite, s32 frame, bool alpha_en u16 *pxl_ptr; u16 rgba; - framebuffer_ptr = &gFramebuffers[D_802806EC][0]; - sprite_ptr = spriteGetFramePtr(sprite, frame); + framebuffer_ptr = &gFramebuffers[sBufferIndex][0]; + sprite_ptr = sprite_getFramePtr(sprite, frame); if (!alpha_enabled) { - set_prim_color(0, 0, 0x80); - draw_prim_rect(x, y, sprite_ptr->w, sprite_ptr->h); + framebufferdraw_setPrimColor(0, 0, 0x80); + framebufferdraw_drawRect(x, y, sprite_ptr->w, sprite_ptr->h); } chunk_ptr = (BKSpriteTextureBlock *)(sprite_ptr + 1); for(i_chunk = 0; i_chunk < sprite_ptr->chunkCnt; i_chunk++) { @@ -220,7 +210,7 @@ void draw_sprite_rgba16(s32 x, s32 y, BKSprite *sprite, s32 frame, bool alpha_en } } -void draw_sprite_i4(s32 x, s32 y, BKSprite *sprite, s32 frame, bool aplha_enabled) { +void framebufferdraw_draw_I4(s32 x, s32 y, BKSprite *sprite, s32 frame, bool aplha_enabled) { BKSpriteFrame *frame_ptr; BKSpriteTextureBlock *chunk_ptr; s16 *temp_v0; @@ -235,11 +225,11 @@ void draw_sprite_i4(s32 x, s32 y, BKSprite *sprite, s32 frame, bool aplha_enable s32 txtr_x; u16 *fb_pxl_ptr; - framebuffer_ptr = &gFramebuffers[D_802806EC][0]; - frame_ptr = spriteGetFramePtr(sprite, frame); + framebuffer_ptr = &gFramebuffers[sBufferIndex][0]; + frame_ptr = sprite_getFramePtr(sprite, frame); if (!aplha_enabled) { - set_prim_color(0, 0, 0x80); - draw_prim_rect(x, y, frame_ptr->w, frame_ptr->h); + framebufferdraw_setPrimColor(0, 0, 0x80); + framebufferdraw_drawRect(x, y, frame_ptr->w, frame_ptr->h); } chunk_ptr = (BKSpriteTextureBlock *)(frame_ptr + 1); for(i_chunk = 0; i_chunk < frame_ptr->chunkCnt; i_chunk++) { @@ -273,7 +263,7 @@ void draw_sprite_i4(s32 x, s32 y, BKSprite *sprite, s32 frame, bool aplha_enable } } -void draw_sprite_ia4(s32 x, s32 y, BKSprite *sprite, s32 frame, bool aplha_enabled) { +void framebufferdraw_draw_IA4(s32 x, s32 y, BKSprite *sprite, s32 frame, bool aplha_enabled) { BKSpriteFrame *frame_ptr; BKSpriteTextureBlock *chunk_ptr; s16 *temp_v0; @@ -292,11 +282,11 @@ void draw_sprite_ia4(s32 x, s32 y, BKSprite *sprite, s32 frame, bool aplha_enabl s32 txtr_x; u16 *fb_pxl_ptr; - framebuffer_ptr = &gFramebuffers[D_802806EC][0]; - frame_ptr = spriteGetFramePtr(sprite, frame); + framebuffer_ptr = &gFramebuffers[sBufferIndex][0]; + frame_ptr = sprite_getFramePtr(sprite, frame); if (!aplha_enabled) { - set_prim_color(0, 0, 0x80); - draw_prim_rect(x, y, frame_ptr->w, frame_ptr->h); + framebufferdraw_setPrimColor(0, 0, 0x80); + framebufferdraw_drawRect(x, y, frame_ptr->w, frame_ptr->h); } chunk_ptr = (BKSpriteTextureBlock *)(frame_ptr + 1); for(i_chunk = 0; i_chunk < frame_ptr->chunkCnt; i_chunk++) { @@ -334,7 +324,7 @@ void draw_sprite_ia4(s32 x, s32 y, BKSprite *sprite, s32 frame, bool aplha_enabl } } -void draw_sprite_i8(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled) { +void framebufferdraw_draw_I8(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled) { BKSpriteFrame *frame_ptr; BKSpriteTextureBlock *chunk_ptr; s16 *pixel_ptr; @@ -347,11 +337,11 @@ void draw_sprite_i8(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled s32 i_chunk; s32 txtr_y; - framebuffer_ptr = &gFramebuffers[D_802806EC][0]; - frame_ptr = spriteGetFramePtr(sprite, frame); + framebuffer_ptr = &gFramebuffers[sBufferIndex][0]; + frame_ptr = sprite_getFramePtr(sprite, frame); if (!alpha_enabled) { - set_prim_color(0, 0, 0x80); - draw_prim_rect(x, y, frame_ptr->w, frame_ptr->h); + framebufferdraw_setPrimColor(0, 0, 0x80); + framebufferdraw_drawRect(x, y, frame_ptr->w, frame_ptr->h); } chunk_ptr = (BKSpriteTextureBlock *)(frame_ptr + 1); for(i_chunk = 0; i_chunk < frame_ptr->chunkCnt; i_chunk++){ @@ -382,7 +372,7 @@ void draw_sprite_i8(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled } } -void draw_sprite_ia8(s32 x, s32 y, BKSprite *sprite, s32 frame, bool alpha_enabled) { +void framebufferdraw_draw_IA8(s32 x, s32 y, BKSprite *sprite, s32 frame, bool alpha_enabled) { BKSpriteFrame *sprite_frame; BKSpriteTextureBlock *chunk_ptr; s16 *temp_a1; @@ -396,12 +386,12 @@ void draw_sprite_ia8(s32 x, s32 y, BKSprite *sprite, s32 frame, bool alpha_enabl s32 var_t3; u32 temp_a2; - framebuffer_ptr = &gFramebuffers[D_802806EC][0]; - sprite_frame = spriteGetFramePtr(sprite, frame); + framebuffer_ptr = &gFramebuffers[sBufferIndex][0]; + sprite_frame = sprite_getFramePtr(sprite, frame); if (!alpha_enabled) { //draw blue rect over display area - set_prim_color(0, 0, 0x80); - draw_prim_rect(x, y, sprite_frame->w, sprite_frame->h); + framebufferdraw_setPrimColor(0, 0, 0x80); + framebufferdraw_drawRect(x, y, sprite_frame->w, sprite_frame->h); } chunk_ptr = (BKSpriteTextureBlock *)(sprite_frame + 1); for(i_chunk = 0; i_chunk < sprite_frame->chunkCnt; i_chunk++) { @@ -429,7 +419,7 @@ void draw_sprite_ia8(s32 x, s32 y, BKSprite *sprite, s32 frame, bool alpha_enabl } } -void draw_sprite_rgba32(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled){ +void framebufferdraw_draw_RGBA32(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled){ BKSpriteTextureBlock *chunk_ptr; u32 *tmem; u32 fb_value; @@ -451,11 +441,11 @@ void draw_sprite_rgba32(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_ena s32 blue8; - framebuffer = &gFramebuffers[D_802806EC][0]; - sprite_frame = spriteGetFramePtr(sprite, frame); + framebuffer = &gFramebuffers[sBufferIndex][0]; + sprite_frame = sprite_getFramePtr(sprite, frame); if (!alpha_enabled) { - set_prim_color(0, 0, 0x80); - draw_prim_rect(x, y, sprite_frame->w, sprite_frame->h); + framebufferdraw_setPrimColor(0, 0, 0x80); + framebufferdraw_drawRect(x, y, sprite_frame->w, sprite_frame->h); } chunk_ptr = (BKSpriteTextureBlock *) (sprite_frame + 1); for (i_chunk = 0; i_chunk < sprite_frame->chunkCnt; i_chunk++) { @@ -503,13 +493,10 @@ void draw_sprite_rgba32(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_ena } } -void func_802499BC(s32 arg0, s32 arg1, s32 arg2, s32 arg3){//signature may have more variables passed in -} +void framebufferdraw_stub1(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {} //signature may have more variables passed in +void framebufferdraw_stub2(s32 arg0, s32 arg1, s32 arg2, s32 arg3) {} //signature may have more variables passed in -void func_802499D0(s32 arg0, s32 arg1, s32 arg2, s32 arg3){//signature may have more variables passed in -} - -void draw_texture_ci4(s32 x, s32 y, void *tmem, s32 w, s32 h, bool alpha_enabled){ +void framebufferdraw_drawTexture_CI4(s32 x, s32 y, void *tmem, s32 w, s32 h, bool alpha_enabled) { s32 ix; s32 iy; s32 icolor; @@ -519,7 +506,7 @@ void draw_texture_ci4(s32 x, s32 y, void *tmem, s32 w, s32 h, bool alpha_enabled palette_ptr = (u16*)tmem; pixel_ptr = (u8*)&palette_ptr[0x10]; - framebuffer_ptr = &gFramebuffers[D_802806EC][x + y * gFramebufferWidth]; + framebuffer_ptr = &gFramebuffers[sBufferIndex][x + y * gFramebufferWidth]; for(iy = 0; iy < h; iy++){ for(ix = 0; ix < w; ix++){ icolor = (ix & 1)? pixel_ptr[ix/2 + (iy*w)/2] & 0xF @@ -531,31 +518,31 @@ void draw_texture_ci4(s32 x, s32 y, void *tmem, s32 w, s32 h, bool alpha_enabled } } -void draw_sprite(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled) { - s16 temp_v0; +void framebufferdraw_draw(s32 x, s32 y, BKSprite *sprite, s32 frame, s32 alpha_enabled) { + s16 type; - temp_v0 = sprite->type; - if (temp_v0 & SPRITE_TYPE_I4) { - draw_sprite_i4(x, y, sprite, frame, alpha_enabled); - } else if (temp_v0 & SPRITE_TYPE_IA4) { - draw_sprite_ia4(x, y, sprite, frame, alpha_enabled); - } else if (temp_v0 & SPRITE_TYPE_I8) { - draw_sprite_i8(x, y, sprite, frame, alpha_enabled); - } else if (temp_v0 & SPRITE_TYPE_IA8) { - draw_sprite_ia8(x, y, sprite, frame, alpha_enabled); - } else if (temp_v0 & SPRITE_TYPE_RGBA16) { - draw_sprite_rgba16(x, y, sprite, frame, alpha_enabled); - } else if (temp_v0 & SPRITE_TYPE_RGBA32) { - draw_sprite_rgba32(x, y, sprite, frame, alpha_enabled); - } else if (temp_v0 & SPRITE_TYPE_CI4) { - draw_sprite_ci4(x, y, sprite, frame, alpha_enabled); - } else if (temp_v0 & SPRITE_TYPE_CI8) { - draw_sprite_ci8(x, y, sprite, frame, alpha_enabled); + type = sprite->type; + if (type & SPRITE_TYPE_I4) { + framebufferdraw_draw_I4(x, y, sprite, frame, alpha_enabled); + } else if (type & SPRITE_TYPE_IA4) { + framebufferdraw_draw_IA4(x, y, sprite, frame, alpha_enabled); + } else if (type & SPRITE_TYPE_I8) { + framebufferdraw_draw_I8(x, y, sprite, frame, alpha_enabled); + } else if (type & SPRITE_TYPE_IA8) { + framebufferdraw_draw_IA8(x, y, sprite, frame, alpha_enabled); + } else if (type & SPRITE_TYPE_RGBA16) { + framebufferdraw_draw_RGBA16(x, y, sprite, frame, alpha_enabled); + } else if (type & SPRITE_TYPE_RGBA32) { + framebufferdraw_draw_RGBA32(x, y, sprite, frame, alpha_enabled); + } else if (type & SPRITE_TYPE_CI4) { + framebufferdraw_draw_CI4(x, y, sprite, frame, alpha_enabled); + } else if (type & SPRITE_TYPE_CI8) { + framebufferdraw_draw_CI8(x, y, sprite, frame, alpha_enabled); } } //arg4 = alpha enabled? -void func_80249DE0(s32 x, s32 y, s16 *arg2, s32 arg3, s32 arg4) { +void framebufferdraw_func_80249DE0(s32 x, s32 y, s16 *arg2, s32 arg3, s32 arg4) { s32 ix; s32 var_t2; s32 iy; @@ -567,11 +554,11 @@ void func_80249DE0(s32 x, s32 y, s16 *arg2, s32 arg3, s32 arg4) { temp_v0 = func_8033EFB0(arg2, arg3); texture_ptr = (u16*)(temp_v0 + 1); if (*arg2 == SPRITE_TYPE_CI4) { - draw_texture_ci4(x, y, temp_v0 + 1, temp_v0->w, temp_v0->h, arg4); + framebufferdraw_drawTexture_CI4(x, y, temp_v0 + 1, temp_v0->w, temp_v0->h, arg4); return; } //otherwise RGBA16 - framebuffer_ptr = &gFramebuffers[D_802806EC][x + y*gFramebufferWidth]; + framebuffer_ptr = &gFramebuffers[sBufferIndex][x + y*gFramebufferWidth]; for(iy = 0; iy < temp_v0->h; iy++){ for(ix = 0; ix < temp_v0->w; ix++){ temp_v1 = *texture_ptr; @@ -587,7 +574,7 @@ void func_80249DE0(s32 x, s32 y, s16 *arg2, s32 arg3, s32 arg4) { } } -void func_80249F34(s32 x, s32 y, Struct84s* maskList, s32 maskIndex, s32 mX, s32 mY, s32 mW, s32 mH, s32 maskColor, s32 mStride, bool dim, s32 replacementColor) { +void framebufferdraw_func_80249F34(s32 x, s32 y, Struct84s* maskList, s32 maskIndex, s32 mX, s32 mY, s32 mW, s32 mH, s32 maskColor, s32 mStride, bool dim, s32 replacementColor) { BKSpriteTextureBlock* mask_texture; s32 ix; s32 iy; @@ -596,7 +583,7 @@ void func_80249F34(s32 x, s32 y, Struct84s* maskList, s32 maskIndex, s32 mX, s32 mask_texture = func_8033EFB0(maskList, maskIndex); mask_ptr = (u16*)(mask_texture + 1) + mX + mY * mask_texture->w; - color_ptr = &gFramebuffers[D_802806EC][x + y * gFramebufferWidth]; + color_ptr = &gFramebuffers[sBufferIndex][x + y * gFramebufferWidth]; for(iy = 0; iy < mH; iy += mStride){ for(ix = 0; ix < mW; ix++){ @@ -618,122 +605,104 @@ void func_80249F34(s32 x, s32 y, Struct84s* maskList, s32 maskIndex, s32 mX, s32 } } -//fill framebuffer with vert and horz lines -void func_8024A284(s32 x, s32 y, s32 arg2, s32 arg3, s32 horz_spacing, s32 vert_spacing) { - s32 var_s2; - s32 var_s3; +void framebufferdraw_drawGrid(s32 x, s32 y, s32 arg2, s32 arg3, s32 horz_spacing, s32 vert_spacing) { + s32 x1; + s32 y1; - for(var_s2 = 0; var_s2 < gFramebufferWidth; var_s2 += horz_spacing){ - for(var_s3 = 0; var_s3 < gFramebufferHeight; var_s3++){ - func_8024A3C8(x + var_s2, y + var_s3); + for (x1 = 0; x1 < gFramebufferWidth; x1 += horz_spacing) { + for (y1 = 0; y1 < gFramebufferHeight; y1++) { + framebufferdraw_setPixel(x + x1, y + y1); } } - for(var_s3 = 0; var_s3 < gFramebufferHeight; var_s3 += vert_spacing) { - for(var_s2 = 0; var_s2 < gFramebufferWidth; var_s2++){ - func_8024A3C8(x + var_s2, y + var_s3); + for (y1 = 0; y1 < gFramebufferHeight; y1 += vert_spacing) { + for (x1 = 0; x1 < gFramebufferWidth; x1++) { + framebufferdraw_setPixel(x + x1, y + y1); } } } -//fills in pixel in frame buffer with D_802806E0 color -void func_8024A3C8(s32 x, s32 y) { - s32 temp_v0; - - if (x >= 0) { - if ((x < gFramebufferWidth) && (y >= 0) && (y < gFramebufferHeight)) { - gFramebuffers[D_802806EC][x + y * gFramebufferWidth] = _SHIFTL(D_802806E0 >> 3, 11, 5) | _SHIFTL(D_802806E4 >> 3, 6, 5) | _SHIFTL(D_802806E8 >> 3, 1, 5) | _SHIFTL(1, 0, 1); - } +void framebufferdraw_setPixel(s32 x, s32 y) { + if ((x >= 0) && (x < gFramebufferWidth) && (y >= 0) && (y < gFramebufferHeight)) { + gFramebuffers[sBufferIndex][x + y * gFramebufferWidth] = _SHIFTL(sPrimColor_r >> 3, 11, 5) | _SHIFTL(sPrimColor_g >> 3, 6, 5) | _SHIFTL(sPrimColor_b >> 3, 1, 5) | _SHIFTL(1, 0, 1); } } -//draw rectangular outline -void func_8024A490(s32 x, s32 y, s32 w, s32 h) { - s32 var_s1; +void framebufferdraw_drawOutline(s32 x, s32 y, s32 w, s32 h) { + s32 x1; - for(var_s1 = 0; var_s1 < w; var_s1++){ - func_8024A3C8(x + var_s1, y); - func_8024A3C8(x + var_s1, y + h - 1); + for (x1 = 0; x1 < w; x1++) { + framebufferdraw_setPixel(x + x1, y); + framebufferdraw_setPixel(x + x1, y + h - 1); } - for(var_s1 = 1; var_s1 < h - 1; var_s1++){ - func_8024A3C8(x, y + var_s1); - func_8024A3C8(x + w - 1, y + var_s1); + + for (x1 = 1; x1 < h - 1; x1++) { + framebufferdraw_setPixel(x, y + x1); + framebufferdraw_setPixel(x + w - 1, y + x1); } } -void func_8024A564(s32 x, s32 y, u16 *arg2, s32 arg3, s32 arg4, f32 arg5, f32 arg6) -{ - s32 temp_a2; - s32 temp_a2_2; - s32 temp_a2_3; - s32 temp_f6; - s32 temp_f6_2; - s32 temp_lo; - s32 temp_t5; - s32 var_a0; - s32 var_a2; - s32 new_var; - f32 new_var3; - s32 new_var2; - s32 var_t1; - s32 var_t3; - s32 var_v0; - s32 var_v1; - u16 temp_t8; - s16 *var_t0; - s16 *var_t2; - var_v0 = 0; - var_v1 = gFramebufferWidth; - var_t0 = &gFramebuffers[D_802806EC][x + (y * gFramebufferWidth)]; - new_var = (s32) (((f64) (256.0f / (new_var3 = arg6))) + 0.5); - new_var2 = (s32) (((f64) (256.0f / arg5)) + 0.5); - for (var_t1 = (arg4 * arg6) + 0.5; var_t1 != 0; var_t1--) - { - temp_lo = (arg3 * arg5) + 0.5; - var_a2 = ((var_v0 >> 8) * arg3) << 8; - var_t2 = var_t0; - for (var_t3 = temp_lo; var_t3 != 0; var_t3--) +void framebufferdraw_func_8024A564(s32 x, s32 y, u16 *arg2, s32 arg3, s32 arg4, f32 arg5, f32 arg6) { + s32 temp_lo; + s32 var_a2; + s32 new_var; + f32 new_var3; + s32 new_var2; + s32 var_t1; + s32 var_t3; + s32 var_v0; + s32 fb_width; + s16 *pixel; + s16 *var_t2; + + var_v0 = 0; + fb_width = gFramebufferWidth; + pixel = &gFramebuffers[sBufferIndex][x + (y * gFramebufferWidth)]; + new_var = (s32) (((f64) (256.0f / (new_var3 = arg6))) + 0.5); + new_var2 = (s32) (((f64) (256.0f / arg5)) + 0.5); + + for (var_t1 = (arg4 * arg6) + 0.5; var_t1 != 0; var_t1--) { - *var_t2 = arg2[var_a2 >> 8]; - var_a2 += new_var2; - var_t2++; + temp_lo = (arg3 * arg5) + 0.5; + var_a2 = ((var_v0 >> 8) * arg3) << 8; + var_t2 = pixel; + + for (var_t3 = temp_lo; var_t3 != 0; var_t3--) { + *var_t2 = arg2[var_a2 >> 8]; + var_a2 += new_var2; + var_t2++; + } + + pixel += gFramebufferWidth; + var_v0 += new_var; } - - var_t0 += gFramebufferWidth; - var_v0 += new_var; - } - } -//fills in rectangle in frame buffer with D_802806E0 color -void draw_prim_rect(s32 x, s32 y, s32 w, s32 h) { - s32 var_s0; - s32 var_s1; - s32 var_s4; +void framebufferdraw_drawRect(s32 x, s32 y, s32 w, s32 h) { + s32 y1, x1; - var_s4 = 0; - for(var_s4 = 0; var_s4 < w; var_s4++) { - for(var_s0 = 0; var_s0 < h; var_s0++){ - func_8024A3C8(x + var_s4, y + var_s0); + for (x1 = 0; x1 < w; x1++) { + for (y1 = 0; y1 < h; y1++) { + framebufferdraw_setPixel(x + x1, y + y1); } } } -void func_8024A810(void){ - set_prim_color(0, 0x80, 0); - func_8024A85C(0); +void framebufferdraw_resetPrimColorAndBuffer(void) { + framebufferdraw_setPrimColor(0, 128, 0); + framebufferdraw_setBufferIndex(0); } -void set_prim_color(s32 r, s32 g, s32 b){ - D_802806E0 = r; - D_802806E4 = g; - D_802806E8 = b; +void framebufferdraw_setPrimColor(s32 r, s32 g, s32 b) { + sPrimColor_r = r; + sPrimColor_g = g; + sPrimColor_b = b; } -void func_8024A85C(s32 buffer_indx){ - D_802806EC = buffer_indx; +void framebufferdraw_setBufferIndex(s32 buffer_indx) { + sBufferIndex = buffer_indx; } -s32 func_8024A868(void){ - return D_802806EC; +s32 framebufferdraw_getBufferIndex(void) { + return sBufferIndex; } diff --git a/src/core1/sprite.c b/src/core1/sprite.c new file mode 100644 index 00000000..17fc5534 --- /dev/null +++ b/src/core1/sprite.c @@ -0,0 +1,28 @@ +#include +#include "core1/core1.h" + +u32 sprite_getUnk8(BKSprite *this) { + return this->unk8; +} + +u32 sprite_getUnkA(BKSprite *this) { + return this->unkA; +} + +u32 sprite_getUnk6(BKSprite *this) { + return this->unk6; +} + +u32 sprite_getUnk4(BKSprite *this) { + return this->unk4; +} + +s32 sprite_getFrameCount(BKSprite *this) { + return this->frameCnt; +} + +BKSpriteFrame *sprite_getFramePtr(BKSprite *this, u32 frame_id) { + BKSpriteFrame *sprite_frame; + sprite_frame = (BKSpriteFrame *) (this->offsets[frame_id] + ((s32) ((*this).offsets + this->frameCnt))); + return sprite_frame; +} diff --git a/src/core1/code_3A70.c b/src/core1/stub_3A70.c similarity index 73% rename from src/core1/code_3A70.c rename to src/core1/stub_3A70.c index 21814e6f..1da6873a 100644 --- a/src/core1/code_3A70.c +++ b/src/core1/stub_3A70.c @@ -1,13 +1,9 @@ #include #include "core1/core1.h" -#include "functions.h" -#include "variables.h" +// all functions in this file are unsued -extern f32 ml_cos_deg(f32); -extern f32 ml_sin_deg(f32); - -Gfx D_80275880[] = { +static Gfx sGfxSublist[] = { gsSPClearGeometryMode(G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0060CD00), gsSPTexture(0, 0, 0, G_TX_RENDERTILE, G_OFF), gsDPPipeSync(), @@ -18,34 +14,37 @@ Gfx D_80275880[] = { gsSPEndDisplayList() }; -/* .code */ -void func_80241490(Gfx **gfx, Vtx **vtx, s32 arg2[3], s32 arg3[3], s32 arg4[3], s32 arg5[3], s32 arg6, s32 arg7) { - s32 spB4[3]; +void func_80241490(Gfx **gfx, Vtx **vtx, s32 arg2[3], s32 arg3[3], s32 arg4[3], s32 arg5[3], bool cull_front, s32 arg7) { + s32 vp_position[3]; s32 var_a0; s32 var_v0; s32 var_v1; - s32 sp78[3][4]; + s32 colors[3][4]; s32 i; - viewport_getPosition_vec3w(spB4); - gSPDisplayList((*gfx)++, D_80275880); - if (arg6 != 0) { + viewport_getPosition_vec3w(vp_position); + + gSPDisplayList((*gfx)++, sGfxSublist); + + if (cull_front != FALSE) { gSPSetGeometryMode((*gfx)++, G_ZBUFFER | G_CULL_BACK); } else { gSPSetGeometryMode((*gfx)++, G_ZBUFFER | G_CULL_FRONT); } + gSPVertex((*gfx)++, *vtx, 8, 0); + for(i = 0; i < 2; i++){ for(var_a0 = 0; var_a0 < 2; var_a0++){ for(var_v1 = 0; var_v1 < 2; var_v1++){ var_v0 = (var_v1 == 0) ? arg2[0] : arg3[0]; - (*vtx)->v.ob[0] = (s16) (var_v0 - spB4[0]); + (*vtx)->v.ob[0] = (s16) (var_v0 - vp_position[0]); var_v0 = (i == 0) ? arg2[1] : arg3[1]; - (*vtx)->v.ob[1] = (s16) (var_v0 - spB4[1]); + (*vtx)->v.ob[1] = (s16) (var_v0 - vp_position[1]); var_v0 = (var_a0 == 0) ? arg2[2] : arg3[2]; - (*vtx)->v.ob[2] = (s16) (var_v0 - spB4[2]); + (*vtx)->v.ob[2] = (s16) (var_v0 - vp_position[2]); (*vtx)->v.flag = 0; (*vtx)->v.tc[0] = 0; @@ -62,50 +61,50 @@ void func_80241490(Gfx **gfx, Vtx **vtx, s32 arg2[3], s32 arg3[3], s32 arg4[3], if (arg7 != 0) { for(i = 0; i < 3; i++){ for(var_v1 = 0; var_v1 < 3; var_v1++){ - sp78[i][var_v1] = (arg4[var_v1] * arg5[i]) / 255; + colors[i][var_v1] = (arg4[var_v1] * arg5[i]) / 255; } - sp78[i][3] = 0xFF; + colors[i][3] = 0xFF; } } else { for(i = 0; i < 3; i++){ for(var_v1 = 0; var_v1 < 3; var_v1++){ - sp78[i][var_v1] = arg4[var_v1]; + colors[i][var_v1] = arg4[var_v1]; } - sp78[i][3] = arg5[i]; + colors[i][3] = arg5[i]; } } gDPPipeSync((*gfx)++); - gDPSetPrimColor((*gfx)++, 0, 0, sp78[0][0], sp78[0][1], sp78[0][2], sp78[0][3]); + gDPSetPrimColor((*gfx)++, 0, 0, colors[0][0], colors[0][1], colors[0][2], colors[0][3]); gSP2Triangles((*gfx)++, 7, 3, 5, 0, 5, 3, 1, 0); gSP1Quadrangle((*gfx)++, 6, 4, 0, 2, 0); gDPPipeSync((*gfx)++); - gDPSetPrimColor((*gfx)++, 0, 0, sp78[1][0], sp78[1][1], sp78[1][2], sp78[1][3]); + gDPSetPrimColor((*gfx)++, 0, 0, colors[1][0], colors[1][1], colors[1][2], colors[1][3]); gSP1Quadrangle((*gfx)++, 7, 6, 2, 3, 0); gSP2Triangles((*gfx)++, 4, 5, 0, 0, 5, 1, 0, 0); gDPPipeSync((*gfx)++); - gDPSetPrimColor((*gfx)++, 0, 0, sp78[2][0], sp78[2][1], sp78[2][2], sp78[2][3]); + gDPSetPrimColor((*gfx)++, 0, 0, colors[2][0], colors[2][1], colors[2][2], colors[2][3]); gSP1Quadrangle((*gfx)++, 5, 4, 6, 7, 0); gSP2Triangles((*gfx)++, 0, 1, 2, 0, 1, 3, 2, 0); } void func_80241928(Gfx** gfx, Vtx** vtx, s32 arg2[3], s32 arg3, s32 arg4[3]) { - s32 spB4[3]; + s32 vp_position[3]; f32 var_f26; s32 var_fp; s32 var_s0; - viewport_getPosition_vec3w(spB4); + viewport_getPosition_vec3w(vp_position); for(var_fp = 0; var_fp < 4; var_fp++){ - gSPDisplayList((*gfx)++, D_80275880); + gSPDisplayList((*gfx)++, sGfxSublist); gSPSetGeometryMode((*gfx)++, G_ZBUFFER); gSPVertex((*gfx)++, *vtx, 10, 0); for(var_f26 = 0; var_f26 <= 90; var_f26 += 22.5){ for(var_s0 = -300; var_s0 < 900; var_s0 += 600){ - (*vtx)->v.ob[0] = ((ml_sin_deg(var_fp*90 + var_f26) * arg3) + (f32) arg2[0]) - spB4[0]; - (*vtx)->v.ob[1] = ((var_s0 / 2) + arg2[1]) - spB4[1]; - (*vtx)->v.ob[2] = ((ml_cos_deg(var_fp*90 + var_f26) * arg3) + (f32) arg2[2]) - spB4[2]; + (*vtx)->v.ob[0] = ((ml_sin_deg(var_fp*90 + var_f26) * arg3) + (f32) arg2[0]) - vp_position[0]; + (*vtx)->v.ob[1] = ((var_s0 / 2) + arg2[1]) - vp_position[1]; + (*vtx)->v.ob[2] = ((ml_cos_deg(var_fp*90 + var_f26) * arg3) + (f32) arg2[2]) - vp_position[2]; (*vtx)->v.tc[0] = 0; (*vtx)->v.tc[1] = 0; (*vtx)->v.cn[0] = 0; @@ -164,7 +163,7 @@ void func_802424D4(Gfx **gfx, Mtx **mtx, Vtx **vtx, f32 arg3[3], f32 arg4[3], f3 sp68[2] *= arg5; viewport_getPosition_vec3f(sp5C); - gSPDisplayList((*gfx)++, D_80275880); + gSPDisplayList((*gfx)++, sGfxSublist); gSPSetGeometryMode((*gfx)++, G_ZBUFFER); gSPVertex((*gfx)++, *vtx, 8, 0); for( var_a0 = 0; var_a0 < 2; var_a0++){ @@ -203,51 +202,58 @@ void func_802424D4(Gfx **gfx, Mtx **mtx, Vtx **vtx, f32 arg3[3], f32 arg4[3], f3 } } -void func_80242BE8(Gfx **gfx, Vtx **arg1, f32 arg2[2][2][2][3], s32 arg3[3], s32 *arg4, s32 arg5) +void func_80242BE8(Gfx **gfx, Vtx **vtx, f32 arg2[2][2][2][3], s32 color[3], s32 alpha_values[3], s32 cull_back) { - f32 sp84[3]; + f32 vp_position[3]; #define var_v0 ((f32*)((u8*)arg2 + (i << 2) * sizeof(f32[3]) + (j << 1) * sizeof(f32[3]) + k * sizeof(f32[3]))) s32 i; s32 j; s32 k; - viewport_getPosition_vec3f(sp84); - gSPDisplayList((*gfx)++, D_80275880); - if (arg5){ + + viewport_getPosition_vec3f(vp_position); + + gSPDisplayList((*gfx)++, sGfxSublist); + + if (cull_back){ gSPSetGeometryMode((*gfx)++, G_CULL_BACK); } else { gSPSetGeometryMode((*gfx)++, G_CULL_FRONT); } - gSPVertex((*gfx)++, *arg1, 8, 0); - for(i = 0; i < 2; i++){ - for(j = 0; j < 2; j++){ - for(k = 0; k < 2; k++){ - (*arg1)->v.ob[0] = var_v0[0] - sp84[0]; - (*arg1)->v.ob[1] = var_v0[1] - sp84[1]; - (*arg1)->v.ob[2] = var_v0[2] - sp84[2]; - (*arg1)->v.flag = 0; - (*arg1)->v.tc[0] = 0; - (*arg1)->v.tc[1] = 0; - (*arg1)->v.cn[0] = 0; - (*arg1)->v.cn[1] = 0; - (*arg1)->v.cn[2] = 0; - (*arg1)->v.cn[3] = 0; - (*arg1)++; + + gSPVertex((*gfx)++, *vtx, 8, 0); + + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + for (k = 0; k < 2; k++) { + (*vtx)->v.ob[0] = var_v0[0] - vp_position[0]; + (*vtx)->v.ob[1] = var_v0[1] - vp_position[1]; + (*vtx)->v.ob[2] = var_v0[2] - vp_position[2]; + (*vtx)->v.flag = 0; + (*vtx)->v.tc[0] = 0; + (*vtx)->v.tc[1] = 0; + (*vtx)->v.cn[0] = 0; + (*vtx)->v.cn[1] = 0; + (*vtx)->v.cn[2] = 0; + (*vtx)->v.cn[3] = 0; + (*vtx)++; } } } + #undef var_v0 + gDPPipeSync((*gfx)++); - gDPSetPrimColor((*gfx)++, 0, 0, arg3[0], arg3[1], arg3[2], arg4[0]); + gDPSetPrimColor((*gfx)++, 0, 0, color[0], color[1], color[2], alpha_values[0]); gSP2Triangles((*gfx)++, 7, 3, 5, 0, 5, 3, 1, 0); gSP1Quadrangle((*gfx)++, 6, 4, 0, 2, 0); gDPPipeSync((*gfx)++); - gDPSetPrimColor((*gfx)++, 0, 0, arg3[0], arg3[1], arg3[2], arg4[1]); + gDPSetPrimColor((*gfx)++, 0, 0, color[0], color[1], color[2], alpha_values[1]); gSP1Quadrangle((*gfx)++, 7, 6, 2, 3, 0); gSP2Triangles((*gfx)++, 4, 5, 0, 0, 5, 1, 0, 0); gDPPipeSync((*gfx)++); - gDPSetPrimColor((*gfx)++, 0, 0, arg3[0], arg3[1], arg3[2], arg4[2]); + gDPSetPrimColor((*gfx)++, 0, 0, color[0], color[1], color[2], alpha_values[2]); gSP1Quadrangle((*gfx)++, 5, 4, 6, 7, 0); gSP2Triangles((*gfx)++, 0, 1, 2, 0, 1, 3, 2, 0); } diff --git a/src/core2/code_5C240.c b/src/core2/code_5C240.c index 1d91b34a..d0b16520 100644 --- a/src/core2/code_5C240.c +++ b/src/core2/code_5C240.c @@ -29,8 +29,8 @@ void func_802E31D0(s32 arg0) { temp_v0 = D_8037E8C0.unk14; if ((temp_v0 == 0) || (temp_v0 == 3)) { - func_8024A85C(arg0); - func_80249DE0(0, 0, D_8037E8C0.unkC, 0, 0); + framebufferdraw_setBufferIndex(arg0); + framebufferdraw_func_80249DE0(0, 0, D_8037E8C0.unkC, 0, 0); osWritebackDCache(gFramebuffers[arg0], (s32) ((f32) gFramebufferWidth * (f32) gFramebufferHeight * sizeof(s16))); } } diff --git a/src/core2/code_5C870.c b/src/core2/code_5C870.c index e7c287f2..79c0b928 100644 --- a/src/core2/code_5C870.c +++ b/src/core2/code_5C870.c @@ -166,7 +166,7 @@ void func_802E39D0(Gfx **gdl, Mtx **mptr, Vtx **vptr, s32 framebuffer_idx, s32 a } void func_802E3BD0(s32 frame_buffer_indx){ - func_8024A85C(frame_buffer_indx); + framebufferdraw_setBufferIndex(frame_buffer_indx); } void func_802E3BF0(void){ diff --git a/src/core2/code_5DBC0.c b/src/core2/code_5DBC0.c index 893d6b55..66999553 100644 --- a/src/core2/code_5DBC0.c +++ b/src/core2/code_5DBC0.c @@ -121,7 +121,7 @@ BKSpriteTextureBlock **func_802E4D8C(BKSprite *sprite) { s32 i; s32 chunk_size; - frame = spriteGetFramePtr(sprite, 0); + frame = sprite_getFramePtr(sprite, 0); chunkPtrArray = (BKSpriteTextureBlock **)malloc((frame->chunkCnt + 1)*4); chunk = (BKSpriteTextureBlock *)(frame + 1); for (i = 0; i < frame->chunkCnt; i++) { @@ -530,7 +530,7 @@ void func_802E6820(s32 arg0) { prev_sprite_ptr = D_8037E900->unk4[var_s5].font_bin; if (D_8037E900->unk4[var_s5].font_bin != NULL) { - chunk_count = spriteGetFramePtr(prev_sprite_ptr, 0U)->chunkCnt; + chunk_count = sprite_getFramePtr(prev_sprite_ptr, 0U)->chunkCnt; D_8037E900->unk4[var_s5].font_bin = (BKSprite *)defrag_asset(D_8037E900->unk4[var_s5].font_bin); for(i_chunk = 0; i_chunk < chunk_count; i_chunk++){ D_8037E900->unk4[var_s5].letter_texture[i_chunk] = ((u32)(((s32)D_8037E900->unk4[var_s5].letter_texture[i_chunk] - (s32)prev_sprite_ptr)) + (u32)D_8037E900->unk4[var_s5].font_bin); diff --git a/src/core2/code_6DA30.c b/src/core2/code_6DA30.c index d5ee420c..ecf8e7de 100644 --- a/src/core2/code_6DA30.c +++ b/src/core2/code_6DA30.c @@ -283,7 +283,7 @@ void func_802F4B58(BKSpriteTextureBlock *alphaMask, BKSpriteTextureBlock *textur //This functions seperates the fonts into letters FontLetter *func_802F4C3C(BKSprite *alphaMask, BKSprite *textureSprite){ - BKSpriteFrame * font = spriteGetFramePtr(alphaMask, 0); + BKSpriteFrame * font = sprite_getFramePtr(alphaMask, 0); BKSpriteTextureBlock *chunkPtr; FontLetter * sp2C = malloc((font->chunkCnt + 1)*sizeof(FontLetter)); u8* palDataPtr; @@ -320,7 +320,7 @@ FontLetter *func_802F4C3C(BKSprite *alphaMask, BKSprite *textureSprite){ { chunkPtr = (BKSpriteTextureBlock *)(font + 1); for( i = 0; i < font->chunkCnt; i++){ - func_802F4B58(chunkPtr, (BKSpriteTextureBlock *)(spriteGetFramePtr(textureSprite, 0) + 1)); + func_802F4B58(chunkPtr, (BKSpriteTextureBlock *)(sprite_getFramePtr(textureSprite, 0) + 1)); sp2C[i].unk0 = chunkPtr; chunkSize = chunkPtr->w*chunkPtr->h; chunkDataPtr = (u8*)(chunkPtr + 1); diff --git a/src/core2/code_A5BC0.c b/src/core2/code_A5BC0.c index 074cb3fe..14b261c8 100644 --- a/src/core2/code_A5BC0.c +++ b/src/core2/code_A5BC0.c @@ -1975,7 +1975,7 @@ f32 func_80331D20(BKSprite *sprite) { if (sprite == 0) { return 1.0f; } - frame = spriteGetFramePtr(sprite, 0); + frame = sprite_getFramePtr(sprite, 0); temp_lo = (s32) (((frame->unk10 - frame->unkC) + 1) * sprite->unk8) / (s32) frame->w; temp_lo_2 = (s32) (((frame->unk12 - frame->unkE) + 1) * sprite->unkA) / (s32) frame->h; phi_v0 = (temp_lo_2 < temp_lo) ? temp_lo : temp_lo_2; diff --git a/src/core2/code_AEDA0.c b/src/core2/code_AEDA0.c index 977c2a46..c706c8a7 100644 --- a/src/core2/code_AEDA0.c +++ b/src/core2/code_AEDA0.c @@ -260,7 +260,7 @@ void spriteRender_drawWithSegment(Gfx **gfx, Vtx **vtx, BKSprite *sprite, u32 fr gDPPipelineMode((*gfx)++, G_PM_1PRIMITIVE); } - frame_ptr = spriteGetFramePtr(sprite, frame); + frame_ptr = sprite_getFramePtr(sprite, frame); //load palette in indexed pixels var_t2 = (BKSpriteTextureBlock *)(frame_ptr + 1); diff --git a/src/core2/code_B3A80.c b/src/core2/code_B3A80.c index 4457b83b..fbe2fcc5 100644 --- a/src/core2/code_B3A80.c +++ b/src/core2/code_B3A80.c @@ -338,7 +338,7 @@ BKSprite *func_8033B6C4(enum asset_e sprite_id, BKSpriteDisplayData **arg1){ s0 = assetcache_get(sprite_id); if(D_80383CD4[assetCacheCurrentIndex] == NULL){ func_803382E4(-1); - func_80338308(func_802510A0(s0), func_802510A8(s0)); + func_80338308(sprite_getUnk8(s0), sprite_getUnkA(s0)); D_80383CD4[assetCacheCurrentIndex] = func_80344A1C(s0); } *arg1 = D_80383CD4[assetCacheCurrentIndex]; diff --git a/src/core2/code_C0E60.c b/src/core2/code_C0E60.c index 743230b2..0f758d7d 100644 --- a/src/core2/code_C0E60.c +++ b/src/core2/code_C0E60.c @@ -135,7 +135,7 @@ void func_80348044(Gfx **gfx, BKSprite* sprite, s32 frame, s32 tmem, s32 rtile, s32 var_v0; s32 maskt; - sprite_frame = spriteGetFramePtr(sprite, frame); + sprite_frame = sprite_getFramePtr(sprite, frame); *frame_width = (s32) sprite_frame->w; *frame_height = (s32) sprite_frame->h; if (*textureCount == -1) { diff --git a/src/core2/gc/pauseMenu.c b/src/core2/gc/pauseMenu.c index 5d0b6402..e0ddaa28 100644 --- a/src/core2/gc/pauseMenu.c +++ b/src/core2/gc/pauseMenu.c @@ -761,12 +761,12 @@ void gcpausemenu_init(void) { func_80311604(); gcpausemenu_zoomboxes_initMainMenu(); D_80383010.joystick_sprite = assetcache_get(0x7EB); - D_80383010.joystick_frame_count = spriteGetFrameCount(D_80383010.joystick_sprite); + D_80383010.joystick_frame_count = sprite_getFrameCount(D_80383010.joystick_sprite); D_80383010.left_joystick_alpha = temp_v1 = D_80383010.right_joystick_alpha = 0; D_80383010.joystick_frame = D_80383010.unk3_4 = temp_v1; D_80383010.b_button_sprite = assetcache_get(0x7ED); - D_80383010.b_button_frame_count = spriteGetFrameCount(D_80383010.b_button_sprite); + D_80383010.b_button_frame_count = sprite_getFrameCount(D_80383010.b_button_sprite); D_80383010.b_button_frame = D_80383010.unk3_0 = D_80383010.b_button_alpha = 0; D_80383010.page_cnt = gcpausemenu_initLargestPageIndex(); D_80383010.sns_alpha = D_80383010.sns_visible = D_80383010.unk70_31 = D_80383010.unk70_30 = 0; @@ -1303,7 +1303,7 @@ void __gcpausemenu_drawSprite(Gfx **gdl, Mtx **mptr, Vtx **vptr, BKSprite *sprit f32 sp2C; f32 sp28; - _frame = spriteGetFramePtr(sprite, frame); + _frame = sprite_getFramePtr(sprite, frame); sp2C = _frame->w; sp28 = _frame->h; func_803382E4(5); @@ -1334,7 +1334,7 @@ void gcpausemenu_drawSprite(Gfx **gdl, Mtx **mptr, Vtx **vptr, BKSprite *sprite, BKSpriteFrame *_frame; s32 w; s32 h; - _frame = spriteGetFramePtr(sprite, frame); + _frame = sprite_getFramePtr(sprite, frame); w = ((mirror) ? -1 : 1) * _frame->w; h = _frame->h; __gcpausemenu_drawSprite(gdl, mptr, vptr, sprite, frame, (x - w * 0.5), (y - h * 0.5), w, h, a); diff --git a/src/core2/gc/zoombox.c b/src/core2/gc/zoombox.c index 035de51d..017af7af 100644 --- a/src/core2/gc/zoombox.c +++ b/src/core2/gc/zoombox.c @@ -1343,7 +1343,7 @@ void __gczoombox_load_sprite(GcZoombox *this, GcZoomboxSprite portrait_id){ this->frame_count = this->unkF8->frameCnt; func_803382E4(-1); - func_80338308(func_802510A0(this->unkF8), func_802510A8(this->unkF8)); + func_80338308(sprite_getUnk8(this->unkF8), sprite_getUnkA(this->unkF8)); } void __gczoombox_load_sfx(GcZoombox *this, GcZoomboxSprite portrait_id){ diff --git a/src/core2/particle.c b/src/core2/particle.c index cad7446f..262ceb36 100644 --- a/src/core2/particle.c +++ b/src/core2/particle.c @@ -4,7 +4,7 @@ #include "variables.h" #include "core2/particle.h" -extern s32 spriteGetFrameCount(BKSprite *); +extern s32 sprite_getFrameCount(BKSprite *); extern void func_80344720(s32 SpriteGfx, s32 frame, s32, f32[3], f32[3], f32[3], Gfx **, Mtx **); extern void func_80344424(s32 SpriteGfx, s32 frame, s32, f32[3], f32[3], f32, Gfx **, Mtx **); @@ -626,9 +626,9 @@ void particleEmitter_update(ParticleEmitter *this){ if(this->sprite_1C){ particle->frame += particle->framerate*tick; - if(!((s32)particle->frame < spriteGetFrameCount(this->sprite_1C))){ + if(!((s32)particle->frame < sprite_getFrameCount(this->sprite_1C))){ if(this->draw_mode & PART_EMIT_NO_LOOP){ - particle->frame = spriteGetFrameCount(this->sprite_1C) - 1; + particle->frame = sprite_getFrameCount(this->sprite_1C) - 1; }else{ particle->frame = 0.0f; }