mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-11 23:54:09 +02:00
#370 fix 3DO build
This commit is contained in:
@@ -42,7 +42,11 @@ EWRAM_DATA ExtraInfoLara playersExtra[MAX_PLAYERS];
|
|||||||
#define LEVEL_INFO(name, title, track, secrets) { #name, NULL, title, track, secrets }
|
#define LEVEL_INFO(name, title, track, secrets) { #name, NULL, title, track, secrets }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __3DO__ // TODO fix the title scren on 3DO
|
||||||
|
EWRAM_DATA LevelID gLevelID = LVL_TR1_1;
|
||||||
|
#else
|
||||||
EWRAM_DATA LevelID gLevelID = LVL_TR1_TITLE;
|
EWRAM_DATA LevelID gLevelID = LVL_TR1_TITLE;
|
||||||
|
#endif
|
||||||
|
|
||||||
const LevelInfo gLevelInfo[LVL_MAX] = {
|
const LevelInfo gLevelInfo[LVL_MAX] = {
|
||||||
// TR1
|
// TR1
|
||||||
|
@@ -89,7 +89,7 @@ $index.skip
|
|||||||
MEND
|
MEND
|
||||||
|
|
||||||
boxIsVisible_asm
|
boxIsVisible_asm
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
ldr bz, [m, #(11 * 4)]
|
ldr bz, [m, #(11 * 4)]
|
||||||
add bz, bz, #VIEW_OFF_F
|
add bz, bz, #VIEW_OFF_F
|
||||||
|
@@ -1,11 +1,11 @@
|
|||||||
IMPORT matrixPtr
|
IMPORT gMatrixPtr
|
||||||
IMPORT viewportRel
|
IMPORT viewportRel
|
||||||
IMPORT gVertices
|
IMPORT gVertices
|
||||||
IMPORT gFacesBase
|
IMPORT gFacesBase
|
||||||
IMPORT gOT
|
IMPORT gOT
|
||||||
IMPORT gPalette
|
IMPORT gPalette
|
||||||
IMPORT gShadowQuads
|
IMPORT gShadowQuads
|
||||||
IMPORT cameraViewPos
|
IMPORT gCameraViewPos
|
||||||
IMPORT shadeTable
|
IMPORT shadeTable
|
||||||
IMPORT divTable
|
IMPORT divTable
|
||||||
IMPORT gSinCosTable
|
IMPORT gSinCosTable
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
const void* TRACKS_IMA;
|
const void* TRACKS_IMA;
|
||||||
|
const void* TITLE_SCR; // TODO
|
||||||
|
|
||||||
void* RAM_LVL;
|
void* RAM_LVL;
|
||||||
void* RAM_TEX;
|
void* RAM_TEX;
|
||||||
@@ -7,8 +8,6 @@ void* RAM_SND;
|
|||||||
|
|
||||||
#include "game.h"
|
#include "game.h"
|
||||||
|
|
||||||
Game game;
|
|
||||||
|
|
||||||
Item irqVBL;
|
Item irqVBL;
|
||||||
Item irqVRAM;
|
Item irqVRAM;
|
||||||
Item irqTimer;
|
Item irqTimer;
|
||||||
@@ -124,16 +123,36 @@ void osSetPalette(const uint16* palette)
|
|||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
void osSetGamma(int32 value)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 osGetSystemTimeMS()
|
int32 osGetSystemTimeMS()
|
||||||
{
|
{
|
||||||
return GetMSecTime(irqTimer);
|
return GetMSecTime(irqTimer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool osSaveSettings()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool osLoadSettings()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool osCheckSave()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool osSaveGame()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool osLoadGame()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void osJoyVibrate(int32 index, int32 L, int32 R)
|
void osJoyVibrate(int32 index, int32 L, int32 R)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
@@ -289,7 +308,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
sndInit();
|
sndInit();
|
||||||
|
|
||||||
game.init(gLevelInfo[gLevelID].name);
|
gameInit(gLevelInfo[gLevelID].name);
|
||||||
|
|
||||||
AvailMem(&memInfoVRAM, MEMTYPE_DRAM);
|
AvailMem(&memInfoVRAM, MEMTYPE_DRAM);
|
||||||
printf("DRAM: %d\n", memInfoVRAM.minfo_SysFree);
|
printf("DRAM: %d\n", memInfoVRAM.minfo_SysFree);
|
||||||
@@ -305,8 +324,6 @@ int main(int argc, char *argv[])
|
|||||||
WaitVBL(irqVBL, 1);
|
WaitVBL(irqVBL, 1);
|
||||||
clearFast(screenPage);
|
clearFast(screenPage);
|
||||||
|
|
||||||
uint32 oldKeys = keys;
|
|
||||||
|
|
||||||
updateInput();
|
updateInput();
|
||||||
|
|
||||||
//GetVBLTime(irqVBL, NULL, &frame); // slower
|
//GetVBLTime(irqVBL, NULL, &frame); // slower
|
||||||
@@ -325,18 +342,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
frame /= 2; // 30 Hz
|
frame /= 2; // 30 Hz
|
||||||
|
|
||||||
if ((keys & IK_SELECT) && !(oldKeys & IK_SELECT))
|
|
||||||
{
|
|
||||||
nextLevel();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((keys & IK_A) && (keys & IK_C)) // respawn
|
|
||||||
{
|
|
||||||
players[0]->restore();
|
|
||||||
}
|
|
||||||
|
|
||||||
int32 updateTime = osGetSystemTimeMS();
|
int32 updateTime = osGetSystemTimeMS();
|
||||||
game.update(frame - lastFrame);
|
gameUpdate(frame - lastFrame);
|
||||||
updateTime = osGetSystemTimeMS() - updateTime;
|
updateTime = osGetSystemTimeMS() - updateTime;
|
||||||
|
|
||||||
lastFrame = frame;
|
lastFrame = frame;
|
||||||
@@ -344,12 +351,11 @@ updateTime = osGetSystemTimeMS() - updateTime;
|
|||||||
screenItem = screen.sc_ScreenItems[screenPage];
|
screenItem = screen.sc_ScreenItems[screenPage];
|
||||||
|
|
||||||
int32 renderTime = osGetSystemTimeMS();
|
int32 renderTime = osGetSystemTimeMS();
|
||||||
game.render();
|
gameRender();
|
||||||
renderTime = osGetSystemTimeMS() - renderTime;
|
renderTime = osGetSystemTimeMS() - renderTime;
|
||||||
|
|
||||||
drawInt(FRAME_WIDTH - 8, 4, fps);
|
drawInt(FRAME_WIDTH - 8, 4 + 16, updateTime);
|
||||||
drawInt(FRAME_WIDTH - 8, 4 + 8, updateTime);
|
drawInt(FRAME_WIDTH - 8, 4 + 24, renderTime);
|
||||||
drawInt(FRAME_WIDTH - 8, 4 + 16, renderTime);
|
|
||||||
|
|
||||||
DisplayScreen(screen.sc_Screens[screenPage], NULL);
|
DisplayScreen(screen.sc_Screens[screenPage], NULL);
|
||||||
screenPage ^= 1;
|
screenPage ^= 1;
|
||||||
|
@@ -89,7 +89,7 @@ divLUT RN m0
|
|||||||
|
|
||||||
matrixLerp_asm
|
matrixLerp_asm
|
||||||
stmfd sp!, {r4-r7, lr}
|
stmfd sp!, {r4-r7, lr}
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
check_2
|
check_2
|
||||||
cmp pdiv, #2
|
cmp pdiv, #2
|
||||||
|
@@ -15,7 +15,7 @@ dst RN lr
|
|||||||
|
|
||||||
matrixPush_asm
|
matrixPush_asm
|
||||||
stmfd sp!, {lr}
|
stmfd sp!, {lr}
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr src, [m]
|
ldr src, [m]
|
||||||
add dst, src, #(12 * 4)
|
add dst, src, #(12 * 4)
|
||||||
str dst, [m]
|
str dst, [m]
|
||||||
|
@@ -51,7 +51,7 @@ matrixRotateX_asm
|
|||||||
|
|
||||||
sincos angle, s, c
|
sincos angle, s, c
|
||||||
|
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
add m, m, #(3 * 4)
|
add m, m, #(3 * 4)
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ matrixRotateY_asm
|
|||||||
|
|
||||||
sincos angle, s, c
|
sincos angle, s, c
|
||||||
|
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
|
|
||||||
ldmia m!, {ex0, ex1, ex2}
|
ldmia m!, {ex0, ex1, ex2}
|
||||||
@@ -100,7 +100,7 @@ matrixRotateZ_asm
|
|||||||
|
|
||||||
sincos angle, s, c
|
sincos angle, s, c
|
||||||
|
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
|
|
||||||
ldmia m, {ex0, ex1, ex2, ey0, ey1, ey2}
|
ldmia m, {ex0, ex1, ex2, ey0, ey1, ey2}
|
||||||
@@ -150,7 +150,7 @@ matrixRotateYXZ_asm
|
|||||||
|
|
||||||
stmfd sp!, {r4-r11, lr}
|
stmfd sp!, {r4-r11, lr}
|
||||||
|
|
||||||
ldr mm, =matrixPtr
|
ldr mm, =gMatrixPtr
|
||||||
ldr mm, [mm]
|
ldr mm, [mm]
|
||||||
ldmia mm, {e00, e10, e20, e01, e11, e21, e02, e12, e22}
|
ldmia mm, {e00, e10, e20, e01, e11, e21, e02, e12, e22}
|
||||||
|
|
||||||
@@ -181,7 +181,7 @@ _rotZ cmp angleZ, #0
|
|||||||
rotxy e11, e10, sinZ, cosZ, tmp
|
rotxy e11, e10, sinZ, cosZ, tmp
|
||||||
rotxy e21, e20, sinZ, cosZ, tmp
|
rotxy e21, e20, sinZ, cosZ, tmp
|
||||||
|
|
||||||
_done ldr mm, =matrixPtr
|
_done ldr mm, =gMatrixPtr
|
||||||
ldr mm, [mm]
|
ldr mm, [mm]
|
||||||
stmia mm, {e00, e10, e20, e01, e11, e21, e02, e12, e22}
|
stmia mm, {e00, e10, e20, e01, e11, e21, e02, e12, e22}
|
||||||
ldmfd sp!, {r4-r11, pc}
|
ldmfd sp!, {r4-r11, pc}
|
||||||
@@ -204,7 +204,7 @@ matrixRotateYQ_asm
|
|||||||
|
|
||||||
stmfd sp!, {r4-r5, lr}
|
stmfd sp!, {r4-r5, lr}
|
||||||
|
|
||||||
ldr mx, =matrixPtr
|
ldr mx, =gMatrixPtr
|
||||||
ldr mx, [mx]
|
ldr mx, [mx]
|
||||||
add my, mx, #(6 * 4)
|
add my, mx, #(6 * 4)
|
||||||
|
|
||||||
|
@@ -12,7 +12,7 @@ e3 RN r3
|
|||||||
m RN r12
|
m RN r12
|
||||||
|
|
||||||
matrixSetIdentity_asm
|
matrixSetIdentity_asm
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
mov e0, #0x4000
|
mov e0, #0x4000
|
||||||
mov e1, #0
|
mov e1, #0
|
||||||
|
@@ -21,7 +21,7 @@ dz RN lr
|
|||||||
matrixTranslateRel_asm
|
matrixTranslateRel_asm
|
||||||
stmfd sp!, {r4-r7, lr}
|
stmfd sp!, {r4-r7, lr}
|
||||||
|
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
add m, m, #(12 * 4)
|
add m, m, #(12 * 4)
|
||||||
|
|
||||||
@@ -51,13 +51,13 @@ matrixTranslateRel_asm
|
|||||||
matrixTranslateAbs_asm
|
matrixTranslateAbs_asm
|
||||||
stmfd sp!, {r4-r7, lr}
|
stmfd sp!, {r4-r7, lr}
|
||||||
|
|
||||||
ldr m, =cameraViewPos
|
ldr m, =gCameraViewPos
|
||||||
ldmia m, {e0, e1, e2}
|
ldmia m, {e0, e1, e2}
|
||||||
sub x, x, e0
|
sub x, x, e0
|
||||||
sub y, y, e1
|
sub y, y, e1
|
||||||
sub z, z, e2
|
sub z, z, e2
|
||||||
|
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
|
|
||||||
ldmia m!, {e0, e1, e2}
|
ldmia m!, {e0, e1, e2}
|
||||||
@@ -83,7 +83,7 @@ matrixTranslateAbs_asm
|
|||||||
matrixTranslateSet_asm
|
matrixTranslateSet_asm
|
||||||
stmfd sp!, {r4-r7, lr}
|
stmfd sp!, {r4-r7, lr}
|
||||||
|
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
|
|
||||||
ldmia m!, {e0, e1, e2}
|
ldmia m!, {e0, e1, e2}
|
||||||
|
@@ -26,7 +26,7 @@ divLUT RN lr
|
|||||||
projectVertices_asm
|
projectVertices_asm
|
||||||
stmfd sp!, {r4-r11, lr}
|
stmfd sp!, {r4-r11, lr}
|
||||||
|
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
ldr vertex, =gVertices
|
ldr vertex, =gVertices
|
||||||
mov r3, vCount
|
mov r3, vCount
|
||||||
|
@@ -722,7 +722,7 @@ int32 boxIsVisible_c(const AABBs* box)
|
|||||||
y = mm[dx][1] + mm[dy][1] + mm[dz][1];\
|
y = mm[dx][1] + mm[dy][1] + mm[dz][1];\
|
||||||
z = mm[dx][2] + mm[dy][2] + mm[dz][2];\
|
z = mm[dx][2] + mm[dy][2] + mm[dz][2];\
|
||||||
if (z >= VIEW_MIN_F && z <= VIEW_MAX_F) {\
|
if (z >= VIEW_MIN_F && z <= VIEW_MAX_F) {\
|
||||||
z = divTable[z >> (FIXED_SHIFT + PROJ_SHIFT)];\
|
z = gDivTable[z >> (FIXED_SHIFT + PROJ_SHIFT)];\
|
||||||
x = x * z;\
|
x = x * z;\
|
||||||
y = y * z;\
|
y = y * z;\
|
||||||
if (x < rMinX) rMinX = x;\
|
if (x < rMinX) rMinX = x;\
|
||||||
@@ -927,9 +927,9 @@ void renderSprite(int32 vx, int32 vy, int32 vz, int32 vg, int32 index)
|
|||||||
|
|
||||||
const Matrix &m = matrixGet();
|
const Matrix &m = matrixGet();
|
||||||
|
|
||||||
vx -= cameraViewPos.x;
|
vx -= gCameraViewPos.x;
|
||||||
vy -= cameraViewPos.y;
|
vy -= gCameraViewPos.y;
|
||||||
vz -= cameraViewPos.z;
|
vz -= gCameraViewPos.z;
|
||||||
|
|
||||||
int32 z = DP33(m.e20, m.e21, m.e22, vx, vy, vz);
|
int32 z = DP33(m.e20, m.e21, m.e22, vx, vy, vz);
|
||||||
|
|
||||||
@@ -1168,3 +1168,25 @@ void renderMesh(const Mesh* mesh)
|
|||||||
transformMesh(vertices, vCount);
|
transformMesh(vertices, vCount);
|
||||||
faceAddMesh(rFaces, crFaces, tFaces, ctFaces, mesh->rCount, mesh->crCount, mesh->tCount, mesh->ctCount, mesh->intensity);
|
faceAddMesh(rFaces, crFaces, tFaces, ctFaces, mesh->rCount, mesh->crCount, mesh->tCount, mesh->ctCount, mesh->intensity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void renderBorder(int32 x, int32 y, int32 width, int32 height, int32 shade, int32 color1, int32 color2, int32 z)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
#define BAR_HEIGHT 5
|
||||||
|
|
||||||
|
void renderBar(int32 x, int32 y, int32 width, int32 value, BarType type)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void renderBackground(const void* background)
|
||||||
|
{
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
void* copyBackground()
|
||||||
|
{
|
||||||
|
return NULL; // TODO
|
||||||
|
}
|
||||||
|
@@ -30,7 +30,7 @@ rMaxY RN y
|
|||||||
sphereIsVisible_asm
|
sphereIsVisible_asm
|
||||||
stmfd sp!, {r4-r8, lr}
|
stmfd sp!, {r4-r8, lr}
|
||||||
|
|
||||||
ldr m, =matrixPtr
|
ldr m, =gMatrixPtr
|
||||||
ldr m, [m]
|
ldr m, [m]
|
||||||
|
|
||||||
ldmia m!, {mx, my, mz}
|
ldmia m!, {mx, my, mz}
|
||||||
|
@@ -4656,7 +4656,7 @@ struct LevelPC
|
|||||||
#define COLOR_THRESHOLD_SQ (8 * 8)
|
#define COLOR_THRESHOLD_SQ (8 * 8)
|
||||||
|
|
||||||
const char* levelNames[] = {
|
const char* levelNames[] = {
|
||||||
#if 0
|
#if 1
|
||||||
"TITLE",
|
"TITLE",
|
||||||
"GYM",
|
"GYM",
|
||||||
"LEVEL1",
|
"LEVEL1",
|
||||||
@@ -5708,9 +5708,9 @@ int main()
|
|||||||
sprintf(path, "levels/%s.PHD", levelNames[i]);
|
sprintf(path, "levels/%s.PHD", levelNames[i]);
|
||||||
levels[i] = new LevelPC(path);
|
levels[i] = new LevelPC(path);
|
||||||
|
|
||||||
if (strcmp(levelNames[i], "TITLE") == 0) {
|
//if (strcmp(levelNames[i], "TITLE") == 0) {
|
||||||
convertScreen("TITLE", levels[i]->palette);
|
// convertScreen("TITLE", levels[i]->palette);
|
||||||
}
|
//}
|
||||||
|
|
||||||
for (int32 j = 0; j < 256; j++)
|
for (int32 j = 0; j < 256; j++)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user