Seem to have fixed 32-bit mode!

This commit is contained in:
MeltyPlayer
2022-10-18 19:18:35 -05:00
parent c4b7dce9f7
commit ede1c4db2c
4 changed files with 37 additions and 23 deletions
+8
View File
@@ -0,0 +1,8 @@
#pragma once
#ifdef WIN32
#define DL_INT_SIZE int32_t
#endif
#ifdef WIN64
#define DL_INT_SIZE int64_t
#endif
+4
View File
@@ -81,8 +81,12 @@ static struct Object *allocate_object(void) {
obj->numCollidedObjs = 0; obj->numCollidedObjs = 0;
for (i = 0; i < 0x50; i++) { for (i = 0; i < 0x50; i++) {
#ifdef _WIN32
obj->rawData.asS32[i] = 0; obj->rawData.asS32[i] = 0;
#endif
#ifdef _WIN64
obj->ptrData.asVoidPtr[i] = NULL; obj->ptrData.asVoidPtr[i] = NULL;
#endif
} }
obj->unused1 = 0; obj->unused1 = 0;
+18 -17
View File
@@ -7,6 +7,7 @@
#include "gfx_adapter.h" #include "gfx_adapter.h"
#include "gfx_adapter_commands.h" #include "gfx_adapter_commands.h"
#include "load_tex_data.h" #include "load_tex_data.h"
#include "cpu_type.h"
static Mat4 s_curMatrix; static Mat4 s_curMatrix;
static float s_curColor[3]; static float s_curColor[3];
@@ -41,7 +42,7 @@ static void convert_uv_to_atlas( float *atlas_uv_out, short tc[] )
static void process_display_list( void *dl ) static void process_display_list( void *dl )
{ {
int64_t *ptr = (int64_t *)dl; DL_INT_SIZE *ptr = (DL_INT_SIZE *)dl;
Vtx *vdata = NULL; Vtx *vdata = NULL;
for( ;; ) for( ;; )
@@ -50,19 +51,19 @@ static void process_display_list( void *dl )
{ {
case GFXCMD_VertexData: case GFXCMD_VertexData:
{ {
UNUSED int64_t v = *ptr++; UNUSED DL_INT_SIZE v = *ptr++;
UNUSED int64_t n = *ptr++; UNUSED DL_INT_SIZE n = *ptr++;
UNUSED int64_t v0 = *ptr++; UNUSED DL_INT_SIZE v0 = *ptr++;
vdata = (Vtx*)v; vdata = (Vtx*)v;
break; break;
} }
case GFXCMD_Triangle: case GFXCMD_Triangle:
{ {
int64_t v00 = *ptr++; DL_INT_SIZE v00 = *ptr++;
int64_t v01 = *ptr++; DL_INT_SIZE v01 = *ptr++;
int64_t v02 = *ptr++; DL_INT_SIZE v02 = *ptr++;
UNUSED int64_t flag0 = *ptr++; UNUSED DL_INT_SIZE flag0 = *ptr++;
short x0 = vdata[v00].v.ob[0], y0 = vdata[v00].v.ob[1], z0 = vdata[v00].v.ob[2]; short x0 = vdata[v00].v.ob[0], y0 = vdata[v00].v.ob[1], z0 = vdata[v00].v.ob[2];
short x1 = vdata[v01].v.ob[0], y1 = vdata[v01].v.ob[1], z1 = vdata[v01].v.ob[2]; short x1 = vdata[v01].v.ob[0], y1 = vdata[v01].v.ob[1], z1 = vdata[v01].v.ob[2];
@@ -129,8 +130,8 @@ static void process_display_list( void *dl )
case GFXCMD_Light: case GFXCMD_Light:
{ {
int64_t l = *ptr++; DL_INT_SIZE l = *ptr++;
int64_t n = *ptr++; DL_INT_SIZE n = *ptr++;
if( n == 1 ) if( n == 1 )
{ {
@@ -145,9 +146,9 @@ static void process_display_list( void *dl )
case GFXCMD_Texture: case GFXCMD_Texture:
{ {
int64_t s = *ptr++; DL_INT_SIZE s = *ptr++;
int64_t t = *ptr++; DL_INT_SIZE t = *ptr++;
int64_t on = *ptr++; DL_INT_SIZE on = *ptr++;
s_scaleS = (uint16_t)s; s_scaleS = (uint16_t)s;
s_scaleT = (uint16_t)t; s_scaleT = (uint16_t)t;
@@ -158,7 +159,7 @@ static void process_display_list( void *dl )
case GFXCMD_SetTextureImage: case GFXCMD_SetTextureImage:
{ {
int64_t i = *ptr++; DL_INT_SIZE i = *ptr++;
s_textureIndex = (int)i; s_textureIndex = (int)i;
s_texWidth = mario_tex_widths[s_textureIndex]; s_texWidth = mario_tex_widths[s_textureIndex];
@@ -169,8 +170,8 @@ static void process_display_list( void *dl )
case GFXCMD_SetTileSize: case GFXCMD_SetTileSize:
{ {
int64_t uls = *ptr++; DL_INT_SIZE uls = *ptr++;
int64_t ult = *ptr++; DL_INT_SIZE ult = *ptr++;
ptr++; // lrs ptr++; // lrs
ptr++; // lrt ptr++; // lrt
@@ -182,7 +183,7 @@ static void process_display_list( void *dl )
case GFXCMD_SubDisplayList: case GFXCMD_SubDisplayList:
{ {
int64_t dl = *ptr++; DL_INT_SIZE dl = *ptr++;
process_display_list( (void*)dl ); process_display_list( (void*)dl );
break; break;
} }
+6 -5
View File
@@ -2,6 +2,7 @@
#include "decomp/include/types.h" #include "decomp/include/types.h"
#include "gfx_adapter_commands.h" #include "gfx_adapter_commands.h"
#include "cpu_type.h"
/* /*
* Vertex (set up for use with colors) * Vertex (set up for use with colors)
@@ -74,11 +75,13 @@ typedef struct {
#define G_OFF 0 #define G_OFF 0
#define G_TEXTURE_IMAGE_FRAC 2 #define G_TEXTURE_IMAGE_FRAC 2
typedef DL_INT_SIZE Gfx;
#define gdSPDefLights1(ar,ag,ab,r1,g1,b1,x1,y1,z1) {{{ {ar,ag,ab},0,{ar,ag,ab},0}}, {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}} } #define gdSPDefLights1(ar,ag,ab,r1,g1,b1,x1,y1,z1) {{{ {ar,ag,ab},0,{ar,ag,ab},0}}, {{{ {r1,g1,b1},0,{r1,g1,b1},0,{x1,y1,z1},0}}} }
#define gsSPVertex(v, n, v0) \ #define gsSPVertex(v, n, v0) \
GFXCMD_VertexData, \ GFXCMD_VertexData, \
(int64_t)v, n, v0 (DL_INT_SIZE)v, n, v0
#define gsSP2Triangles(v00, v01, v02, flag0, v10, v11, v12, flag1) \ #define gsSP2Triangles(v00, v01, v02, flag0, v10, v11, v12, flag1) \
GFXCMD_Triangle, \ GFXCMD_Triangle, \
@@ -95,11 +98,11 @@ typedef struct {
#define gsSPDisplayList(dl) \ #define gsSPDisplayList(dl) \
GFXCMD_SubDisplayList, \ GFXCMD_SubDisplayList, \
(int64_t)dl (DL_INT_SIZE)dl
#define gsSPLight(l, n) \ #define gsSPLight(l, n) \
GFXCMD_Light, \ GFXCMD_Light, \
(int64_t)l, n (DL_INT_SIZE)l, n
#define gsSPTexture(s, t, level, tile, on) \ #define gsSPTexture(s, t, level, tile, on) \
GFXCMD_Texture, \ GFXCMD_Texture, \
@@ -124,5 +127,3 @@ typedef struct {
#define gsDPSetTile(fmt, siz, line, tmem, tile, palette, cmt, maskt, shiftt, cms, masks, shifts) (GFXCMD_None) #define gsDPSetTile(fmt, siz, line, tmem, tile, palette, cmt, maskt, shiftt, cms, masks, shifts) (GFXCMD_None)
#define gsDPLoadBlock(tile, uls, ult, lrs, dxt) (GFXCMD_None) #define gsDPLoadBlock(tile, uls, ult, lrs, dxt) (GFXCMD_None)
#define gsDPLoadSync() (GFXCMD_None) #define gsDPLoadSync() (GFXCMD_None)
typedef int64_t Gfx;