mirror of
https://github.com/lscharen/iigs-game-engine.git
synced 2024-12-01 08:49:41 +00:00
118 lines
2.9 KiB
C
118 lines
2.9 KiB
C
#include <loader.h>
|
|
#include <locator.h>
|
|
#include <memory.h>
|
|
#include <misctool.h>
|
|
#include <types.h>
|
|
|
|
/* #define GTE_IS_SYSTEM_TOOLS_INSTALL 1 */
|
|
#include "gte.h"
|
|
|
|
#ifdef GTE_IS_SYSTEM_TOOLS_INSTALL
|
|
#define ENGINE_STARTUP_MODE 0x0000
|
|
#else
|
|
#define ENGINE_STARTUP_MODE ENGINE_MODE_USER_TOOL
|
|
#endif
|
|
|
|
/* toolbox fail handler */
|
|
#define TOOLFAIL(string) if (toolerror()) SysFailMgr(toolerror(), "\p" string "\n\r Error Code -> $");
|
|
|
|
/* path to the local GTE toolset */
|
|
Str32 toolPath = {9, "1/Tool160" };
|
|
|
|
/* Helper function to load GTE as a user tool or system tool */
|
|
#ifdef GTE_IS_SYSTEM_TOOLS_INSTALL
|
|
void LoadGTEToolSet(Word unused) {
|
|
LoadOneTool(160, 0);
|
|
TOOLFAIL("Unable to load GTE toolset");
|
|
}
|
|
#else
|
|
void LoadGTEToolSet(Word userId) {
|
|
InitialLoadOutputRec loadRec;
|
|
|
|
// Load the tool from the local directory
|
|
loadRec = InitialLoad(userId, (Pointer) (&toolPath), 1);
|
|
TOOLFAIL("Unable to load Tool160 from local path");
|
|
|
|
// Install the tool using the user tool vector
|
|
SetTSPtr(0x8000, 160, loadRec.startAddr);
|
|
TOOLFAIL("Could not install tool");
|
|
}
|
|
#endif // GTE_IS_SYSTEM_TOOLS_INSTALL
|
|
|
|
#ifdef GTE_IS_SYSTEM_TOOLS_INSTALL
|
|
void UnloadGTEToolSet() {
|
|
UnloadOneTool(160);
|
|
TOOLFAIL("Unable to unload GTE toolset");
|
|
}
|
|
#else
|
|
void UnloadGTEToolSet() {
|
|
}
|
|
#endif // GTE_IS_SYSTEM_TOOLS_INSTALL
|
|
|
|
extern Byte tiles[];
|
|
extern Word tilesPalette[16];
|
|
|
|
void main(void) {
|
|
Word userId;
|
|
Word tileId;
|
|
Word controlMask, keyPress;
|
|
Handle dpHandle;
|
|
Word dpAddr;
|
|
int a, b;
|
|
|
|
TLStartUp();
|
|
TOOLFAIL("Unable to start tool locator");
|
|
|
|
userId = MMStartUp();
|
|
TOOLFAIL("Unable to start memory manager");
|
|
|
|
MTStartUp();
|
|
TOOLFAIL("Unable to start misc tools");
|
|
|
|
LoadGTEToolSet(userId);
|
|
|
|
dpHandle = NewHandle(0x200L, userId, attrBank + attrPage + attrFixed + attrLocked + attrNoCross, 0);
|
|
TOOLFAIL("Could not allocate direct page memory for GTE");
|
|
dpAddr = (Word) (*dpHandle);
|
|
|
|
GTEStartUp(dpAddr, (Word) ENGINE_STARTUP_MODE, userId);
|
|
|
|
/* GTESetScreenMode(160, 200); /* 160x200 is the default screen mode */
|
|
GTESetPalette(0, (Pointer)tilesPalette);
|
|
GTELoadTileSet(0, 160, tiles); /* Load in the tiles */
|
|
|
|
GTEFillTileStore(1);
|
|
GTERender(0);
|
|
|
|
for (a = 3; a < 18; a++) {
|
|
GTESetTile(a, a, 5);
|
|
}
|
|
GTESetTile(1, 0, 34);
|
|
GTESetTile(2, 0, 33);
|
|
GTERender(0);
|
|
|
|
GTESetTile(0, 3, 3);
|
|
GTESetTile(0, 4, 4);
|
|
for (b = 4; b < 6; b++) {
|
|
for (a = 1; a < 10; a++) {
|
|
GTESetBG0Origin(a, b);
|
|
tileId = (((b - 1) * 32) + a) | TILE_SOLID_BIT | TILE_HFLIP_BIT;
|
|
GTESetTile(a, b, tileId);
|
|
GTERender(0);
|
|
}
|
|
}
|
|
|
|
do {
|
|
controlMask = GTEReadControl();
|
|
keyPress = controlMask & 0x007F;
|
|
} while (keyPress != 'Q');
|
|
|
|
GTEShutDown();
|
|
UnloadGTEToolSet();
|
|
|
|
DisposeHandle(dpHandle);
|
|
MTShutDown();
|
|
MMShutDown(userId);
|
|
TLShutDown();
|
|
}
|