Seem to have fixed 32-bit mode!
This commit is contained in:
@@ -0,0 +1,8 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
#define DL_INT_SIZE int32_t
|
||||||
|
#endif
|
||||||
|
#ifdef WIN64
|
||||||
|
#define DL_INT_SIZE int64_t
|
||||||
|
#endif
|
||||||
@@ -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
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-6
@@ -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, \
|
||||||
@@ -123,6 +126,4 @@ typedef struct {
|
|||||||
#define gsDPTileSync() (GFXCMD_None)
|
#define gsDPTileSync() (GFXCMD_None)
|
||||||
#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;
|
|
||||||
Reference in New Issue
Block a user