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
This commit is contained in:
mariob92
2024-10-15 22:14:17 +02:00
parent fe54c1d7ce
commit 05fe65d6e8
22 changed files with 306 additions and 297 deletions

View File

@@ -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

View File

@@ -1,33 +0,0 @@
#include <ultra64.h>
#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;
}

View File

@@ -1,8 +1,5 @@
#include <ultra64.h>
#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;
}

28
src/core1/sprite.c Normal file
View File

@@ -0,0 +1,28 @@
#include <ultra64.h>
#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;
}

View File

@@ -1,13 +1,9 @@
#include <ultra64.h>
#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);
}

View File

@@ -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)));
}
}

View File

@@ -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){

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);

View File

@@ -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];

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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){

View File

@@ -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;
}