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;
for (i = 0; i < 0x50; i++) {
#ifdef _WIN32
obj->rawData.asS32[i] = 0;
#endif
#ifdef _WIN64
obj->ptrData.asVoidPtr[i] = NULL;
#endif
}
obj->unused1 = 0;
+18 -17
View File
@@ -7,6 +7,7 @@
#include "gfx_adapter.h"
#include "gfx_adapter_commands.h"
#include "load_tex_data.h"
#include "cpu_type.h"
static Mat4 s_curMatrix;
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 )
{
int64_t *ptr = (int64_t *)dl;
DL_INT_SIZE *ptr = (DL_INT_SIZE *)dl;
Vtx *vdata = NULL;
for( ;; )
@@ -50,19 +51,19 @@ static void process_display_list( void *dl )
{
case GFXCMD_VertexData:
{
UNUSED int64_t v = *ptr++;
UNUSED int64_t n = *ptr++;
UNUSED int64_t v0 = *ptr++;
UNUSED DL_INT_SIZE v = *ptr++;
UNUSED DL_INT_SIZE n = *ptr++;
UNUSED DL_INT_SIZE v0 = *ptr++;
vdata = (Vtx*)v;
break;
}
case GFXCMD_Triangle:
{
int64_t v00 = *ptr++;
int64_t v01 = *ptr++;
int64_t v02 = *ptr++;
UNUSED int64_t flag0 = *ptr++;
DL_INT_SIZE v00 = *ptr++;
DL_INT_SIZE v01 = *ptr++;
DL_INT_SIZE v02 = *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 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:
{
int64_t l = *ptr++;
int64_t n = *ptr++;
DL_INT_SIZE l = *ptr++;
DL_INT_SIZE n = *ptr++;
if( n == 1 )
{
@@ -145,9 +146,9 @@ static void process_display_list( void *dl )
case GFXCMD_Texture:
{
int64_t s = *ptr++;
int64_t t = *ptr++;
int64_t on = *ptr++;
DL_INT_SIZE s = *ptr++;
DL_INT_SIZE t = *ptr++;
DL_INT_SIZE on = *ptr++;
s_scaleS = (uint16_t)s;
s_scaleT = (uint16_t)t;
@@ -158,7 +159,7 @@ static void process_display_list( void *dl )
case GFXCMD_SetTextureImage:
{
int64_t i = *ptr++;
DL_INT_SIZE i = *ptr++;
s_textureIndex = (int)i;
s_texWidth = mario_tex_widths[s_textureIndex];
@@ -169,8 +170,8 @@ static void process_display_list( void *dl )
case GFXCMD_SetTileSize:
{
int64_t uls = *ptr++;
int64_t ult = *ptr++;
DL_INT_SIZE uls = *ptr++;
DL_INT_SIZE ult = *ptr++;
ptr++; // lrs
ptr++; // lrt
@@ -182,7 +183,7 @@ static void process_display_list( void *dl )
case GFXCMD_SubDisplayList:
{
int64_t dl = *ptr++;
DL_INT_SIZE dl = *ptr++;
process_display_list( (void*)dl );
break;
}
+7 -6
View File
@@ -2,6 +2,7 @@
#include "decomp/include/types.h"
#include "gfx_adapter_commands.h"
#include "cpu_type.h"
/*
* Vertex (set up for use with colors)
@@ -74,11 +75,13 @@ typedef struct {
#define G_OFF 0
#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 gsSPVertex(v, n, v0) \
GFXCMD_VertexData, \
(int64_t)v, n, v0
(DL_INT_SIZE)v, n, v0
#define gsSP2Triangles(v00, v01, v02, flag0, v10, v11, v12, flag1) \
GFXCMD_Triangle, \
@@ -95,11 +98,11 @@ typedef struct {
#define gsSPDisplayList(dl) \
GFXCMD_SubDisplayList, \
(int64_t)dl
(DL_INT_SIZE)dl
#define gsSPLight(l, n) \
GFXCMD_Light, \
(int64_t)l, n
(DL_INT_SIZE)l, n
#define gsSPTexture(s, t, level, tile, on) \
GFXCMD_Texture, \
@@ -123,6 +126,4 @@ typedef struct {
#define gsDPTileSync() (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 gsDPLoadSync() (GFXCMD_None)
typedef int64_t Gfx;
#define gsDPLoadSync() (GFXCMD_None)