mirror of
https://github.com/lscharen/iigs-game-engine.git
synced 2025-02-19 13:30:30 +00:00
Consolidated GTE header files accounting for both possible tool locations.
* Introduced GTE_IS_SYSTEM_TOOLS_INSTALL as a toggle for the two locations. * gte.h now routes calls based on the toggle. * LoadGTEToolSet can now handle either location based on the toggle. * Removed main.h and main.r as tool loading is now done explicitly.
This commit is contained in:
parent
05d3f42abc
commit
b7024c8063
42
demos/danmalec/gte.c
Normal file
42
demos/danmalec/gte.c
Normal file
@ -0,0 +1,42 @@
|
||||
/* ********************************************************************
|
||||
|
||||
GTE is copyright Lucas Scharenbroich and licensed under the Apache-2.0
|
||||
License.
|
||||
|
||||
The following code is taken from a branch of GTE:
|
||||
https://github.com/lscharen/iigs-game-engine/blob/ea72e7939262acb84022c83085d24f35f195f3c2/demos/danmalec/main.c
|
||||
|
||||
The contents of this file are a derivite work from GTE intended to
|
||||
ease the process of calling GTE / Tool 160 from ORCA/C and are believed
|
||||
to be permitted under the terms of the Apache-2.0 License.
|
||||
|
||||
********************************************************************* */
|
||||
|
||||
#include <loader.h>
|
||||
#include <locator.h>
|
||||
#include <misctool.h>
|
||||
|
||||
#include "gte.h"
|
||||
|
||||
Str32 toolPath = {9, "1/Tool160" };
|
||||
|
||||
#define TOOLFAIL(string) if (toolerror()) SysFailMgr(toolerror(), "\p" string "\n\r Error Code -> $");
|
||||
|
||||
#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
|
@ -19,42 +19,64 @@
|
||||
#ifndef _GTE_HEADER_INCLUDE_
|
||||
#define _GTE_HEADER_INCLUDE_
|
||||
|
||||
#include <types.h>
|
||||
|
||||
/*
|
||||
GTE_IS_SYSTEM_TOOLS_INSTALL is a boolean toggle for controlling what the application assumes about the location of the GTE tool.
|
||||
|
||||
If GTE is installed in System:Tools, GTE_IS_SYSTEM_TOOLS_INSTALL must be defined.
|
||||
Otherwise, GTE_IS_SYSTEM_TOOLS_INSTALL must be undefined.
|
||||
|
||||
This will control which header file is used as well as the calls used to load the tool during application startup.
|
||||
*/
|
||||
// #define GTE_IS_SYSTEM_TOOLS_INSTALL 1
|
||||
|
||||
#ifdef GTE_IS_SYSTEM_TOOLS_INSTALL
|
||||
#define tool_dispatcher dispatcher
|
||||
#else
|
||||
#define tool_dispatcher 0xE10008L
|
||||
#endif // GTE_IS_SYSTEM_TOOLS_INSTALL
|
||||
|
||||
|
||||
/* GTE C Helper Routines */
|
||||
void LoadGTEToolSet(Word userId);
|
||||
|
||||
|
||||
/* GTE Housekeeping Routines */
|
||||
extern pascal void GTEBootInit(void) inline(0x01A0, dispatcher);
|
||||
extern pascal void GTEStartUp(Word dPageAddr, Word capFlags, Word userID) inline(0x02A0, dispatcher);
|
||||
extern pascal void GTEShutDown(void) inline(0x03A0, dispatcher);
|
||||
extern pascal Word GTEVersion(void) inline(0x04A0, dispatcher);
|
||||
extern pascal void GTEReset(void) inline(0x05A0, dispatcher);
|
||||
extern pascal Word GTEStatus(void) inline(0x06A0, dispatcher);
|
||||
extern pascal void GTEBootInit(void) inline(0x01A0, tool_dispatcher);
|
||||
extern pascal void GTEStartUp(Word dPageAddr, Word capFlags, Word userID) inline(0x02A0, tool_dispatcher);
|
||||
extern pascal void GTEShutDown(void) inline(0x03A0, tool_dispatcher);
|
||||
extern pascal Word GTEVersion(void) inline(0x04A0, tool_dispatcher);
|
||||
extern pascal void GTEReset(void) inline(0x05A0, tool_dispatcher);
|
||||
extern pascal Word GTEStatus(void) inline(0x06A0, tool_dispatcher);
|
||||
|
||||
|
||||
/* GTE Sprite Routines */
|
||||
extern pascal void GTECreateSpriteStamp(Word spriteDescriptor, Word vBuffAddr) inline(0x0FA0, dispatcher);
|
||||
extern pascal void GTEAddSprite(Word spriteSlot, Word spriteFlags, Word vBuffAddr, Word x, Word y) inline(0x10A0, dispatcher);
|
||||
extern pascal void GTEMoveSprite(Word spriteSlot, Word x, Word y) inline(0x11A0, dispatcher);
|
||||
extern pascal void GTEUpdateSprite(Word spriteSlot, Word spriteFlags, Word vBuffAddr) inline(0x12A0, dispatcher);
|
||||
extern pascal void GTERemoveSprite(Word spriteSlot) inline(0x13A0, dispatcher);
|
||||
extern pascal void GTECreateSpriteStamp(Word spriteDescriptor, Word vBuffAddr) inline(0x0FA0, tool_dispatcher);
|
||||
extern pascal void GTEAddSprite(Word spriteSlot, Word spriteFlags, Word vBuffAddr, Word x, Word y) inline(0x10A0, tool_dispatcher);
|
||||
extern pascal void GTEMoveSprite(Word spriteSlot, Word x, Word y) inline(0x11A0, tool_dispatcher);
|
||||
extern pascal void GTEUpdateSprite(Word spriteSlot, Word spriteFlags, Word vBuffAddr) inline(0x12A0, tool_dispatcher);
|
||||
extern pascal void GTERemoveSprite(Word spriteSlot) inline(0x13A0, tool_dispatcher);
|
||||
|
||||
|
||||
/* GTE Tile Routines */
|
||||
extern pascal void GTELoadTileSet(Pointer tileSetPtr) inline(0x0EA0, dispatcher);
|
||||
extern pascal void GTEFillTileStore(Word tileID) inline(0x25A0, dispatcher);
|
||||
extern pascal void GTELoadTileSet(Pointer tileSetPtr) inline(0x0EA0, tool_dispatcher);
|
||||
extern pascal void GTEFillTileStore(Word tileID) inline(0x25A0, tool_dispatcher);
|
||||
|
||||
|
||||
/* GTE Primary Background Routines */
|
||||
extern pascal void GTESetBG0Origin(Word x, Word y) inline(0x0CA0, dispatcher);
|
||||
extern pascal void GTERender(Word flags) inline(0x0DA0, dispatcher);
|
||||
extern pascal void GTESetBG0Origin(Word x, Word y) inline(0x0CA0, tool_dispatcher);
|
||||
extern pascal void GTERender(Word flags) inline(0x0DA0, tool_dispatcher);
|
||||
|
||||
|
||||
/* GTE Global State Functions */
|
||||
extern pascal void GTESetScreenMode(Word width, Word height) inline(0x0AA0, dispatcher);
|
||||
extern pascal void GTESetPalette(Word palNum, Pointer palettePtr) inline(0x16A0, dispatcher);
|
||||
extern pascal void GTESetScreenMode(Word width, Word height) inline(0x0AA0, tool_dispatcher);
|
||||
extern pascal void GTESetPalette(Word palNum, Pointer palettePtr) inline(0x16A0, tool_dispatcher);
|
||||
|
||||
|
||||
/* GTE Misc. Functions */
|
||||
extern pascal Word GTEReadControl(void) inline(0x09A0, dispatcher);
|
||||
extern pascal Word GTEGetSeconds(void) inline(0x14A0, dispatcher);
|
||||
extern pascal Word GTEReadControl(void) inline(0x09A0, tool_dispatcher);
|
||||
extern pascal Word GTEGetSeconds(void) inline(0x14A0, tool_dispatcher);
|
||||
|
||||
|
||||
/* GTE Sprite Constants */
|
||||
@ -76,4 +98,4 @@ extern pascal Word GTEGetSeconds(void) inline(0x14A0, dispatcher);
|
||||
#define GTE_VBUFF_SLOT_COUNT (48) /* Have space for this many stamps */
|
||||
|
||||
|
||||
#endif /* _GTE_HEADER_INCLUDE_ */
|
||||
#endif /* _GTE_HEADER_INCLUDE_ */
|
||||
|
@ -1,80 +0,0 @@
|
||||
/* ********************************************************************
|
||||
|
||||
GTE is copyright Lucas Scharenbroich and licensed under the Apache-2.0
|
||||
License.
|
||||
|
||||
The following GTE function definitions are taken from the GTE Toolbox
|
||||
documentation:
|
||||
https://lscharen.github.io/iigs-game-engine/toolboxref.html
|
||||
|
||||
And from the GTE Macros:
|
||||
https://github.com/lscharen/iigs-game-engine/blob/d7be9f1be44748b0180c930b1f90b144cda661ea/macros/GTE.Macs.s
|
||||
|
||||
The contents of this file are a derivite work from GTE intended to
|
||||
ease the process of calling GTE / Tool 160 from ORCA/C and are believed
|
||||
to be permitted under the terms of the Apache-2.0 License.
|
||||
|
||||
********************************************************************* */
|
||||
|
||||
#ifndef _GTE_HEADER_INCLUDE_
|
||||
#define _GTE_HEADER_INCLUDE_
|
||||
|
||||
#define usertool 0xE10008L
|
||||
|
||||
/* GTE Housekeeping Routines */
|
||||
extern pascal void GTEBootInit(void) inline(0x01A0, usertool);
|
||||
extern pascal void GTEStartUp(Word dPageAddr, Word capFlags, Word userID) inline(0x02A0, usertool);
|
||||
extern pascal void GTEShutDown(void) inline(0x03A0, usertool);
|
||||
extern pascal Word GTEVersion(void) inline(0x04A0, usertool);
|
||||
extern pascal void GTEReset(void) inline(0x05A0, usertool);
|
||||
extern pascal Word GTEStatus(void) inline(0x06A0, usertool);
|
||||
|
||||
|
||||
/* GTE Sprite Routines */
|
||||
extern pascal void GTECreateSpriteStamp(Word spriteDescriptor, Word vBuffAddr) inline(0x0FA0, usertool);
|
||||
extern pascal void GTEAddSprite(Word spriteSlot, Word spriteFlags, Word vBuffAddr, Word x, Word y) inline(0x10A0, usertool);
|
||||
extern pascal void GTEMoveSprite(Word spriteSlot, Word x, Word y) inline(0x11A0, usertool);
|
||||
extern pascal void GTEUpdateSprite(Word spriteSlot, Word spriteFlags, Word vBuffAddr) inline(0x12A0, usertool);
|
||||
extern pascal void GTERemoveSprite(Word spriteSlot) inline(0x13A0, usertool);
|
||||
|
||||
|
||||
/* GTE Tile Routines */
|
||||
extern pascal void GTELoadTileSet(Pointer tileSetPtr) inline(0x0EA0, usertool);
|
||||
extern pascal void GTEFillTileStore(Word tileID) inline(0x25A0, usertool);
|
||||
|
||||
|
||||
/* GTE Primary Background Routines */
|
||||
extern pascal void GTESetBG0Origin(Word x, Word y) inline(0x0CA0, usertool);
|
||||
extern pascal void GTERender(Word flags) inline(0x0DA0, usertool);
|
||||
|
||||
|
||||
/* GTE Global State Functions */
|
||||
extern pascal void GTESetScreenMode(Word width, Word height) inline(0x0AA0, usertool);
|
||||
extern pascal void GTESetPalette(Word palNum, Pointer palettePtr) inline(0x16A0, usertool);
|
||||
|
||||
|
||||
/* GTE Misc. Functions */
|
||||
extern pascal Word GTEReadControl(void) inline(0x09A0, usertool);
|
||||
extern pascal Word GTEGetSeconds(void) inline(0x14A0, usertool);
|
||||
|
||||
|
||||
/* GTE Sprite Constants */
|
||||
#define GTE_SPRITE_HIDE 0x2000
|
||||
#define GTE_SPRITE_16X16 0x1800
|
||||
#define GTE_SPRITE_16X8 0x1000
|
||||
#define GTE_SPRITE_8X16 0x0800
|
||||
#define GTE_SPRITE_8X8 0x0000
|
||||
#define GTE_SPRITE_VFLIP 0x0400
|
||||
#define GTE_SPRITE_HFLIP 0x0200
|
||||
|
||||
|
||||
/* GTE Sprint Stamp Storage Parameters */
|
||||
#define GTE_VBUFF_STRIDE_BYTES (12 * 4) /* Each line has 4 slots of 16 pixels + 8 buffer pixels */
|
||||
#define GTE_VBUFF_TILE_ROW_BYTES (8 * GTE_VBUFF_STRIDE_BYTES) /* Each row is comprised of 8 lines */
|
||||
#define GTE_VBUFF_TILE_COL_BYTES (4)
|
||||
#define GTE_VBUFF_SPRITE_STEP (GTE_VBUFF_TILE_ROW_BYTES*3) /* Allocate space for 16 rows + 8 rows of buffer */
|
||||
#define GTE_VBUFF_SPRITE_START (GTE_VBUFF_TILE_ROW_BYTES+4) /* Start at an offset so $0000 can be used as an empty value */
|
||||
#define GTE_VBUFF_SLOT_COUNT (48) /* Have space for this many stamps */
|
||||
|
||||
|
||||
#endif /* _GTE_HEADER_INCLUDE_ */
|
@ -4,33 +4,12 @@
|
||||
#include <misctool.h>
|
||||
#include <types.h>
|
||||
|
||||
#include "main.h"
|
||||
#include "gte_user.h"
|
||||
#include "gte.h"
|
||||
#include "demo_data.h"
|
||||
|
||||
#define TOOLFAIL(string) if (toolerror()) SysFailMgr(toolerror(), "\p" string "\n\r Error Code -> $");
|
||||
|
||||
typedef struct PString {
|
||||
byte length;
|
||||
char text[32];
|
||||
} PString;
|
||||
|
||||
#define SPRITE_START_TILE 2
|
||||
|
||||
PString toolPath = {9, "1/Tool160" };
|
||||
|
||||
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");
|
||||
}
|
||||
|
||||
#define SPRITE_SLOT 0
|
||||
#define SPRITE_VBUFF (GTE_VBUFF_SPRITE_START+0*GTE_VBUFF_SPRITE_STEP)
|
||||
|
||||
@ -53,13 +32,6 @@ int main (void) {
|
||||
MTStartUp();
|
||||
TOOLFAIL("Unable to start misc tools");
|
||||
|
||||
/* If GTE is installed in System:Tools use this and switch to "gte.h" */
|
||||
/*
|
||||
LoadOneTool(160, 0);
|
||||
TOOLFAIL("Unable to load GTE toolset");
|
||||
*/
|
||||
|
||||
/* If GTE is installed with the application, use this and "gte_user.h" */
|
||||
LoadGTEToolSet(userId);
|
||||
|
||||
dpHndl = NewHandle(0x0200, userId, 0x4015, 0);
|
||||
@ -136,4 +108,4 @@ int main (void) {
|
||||
|
||||
TLShutDown();
|
||||
TOOLFAIL("Unable to shutdown tool locator");
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +0,0 @@
|
||||
#ifndef _GUARD_PROJECTGTETest1_FILEmain_
|
||||
#define _GUARD_PROJECTGTETest1_FILEmain_
|
||||
|
||||
#define rez_tools 1
|
||||
|
||||
#endif /* defined(_GUARD_PROJECTGTETest1_FILEmain_) */
|
@ -1,10 +0,0 @@
|
||||
#include "types.rez"
|
||||
#include "main.h"
|
||||
|
||||
resource rToolStartup (rez_tools) {
|
||||
mode320,
|
||||
{
|
||||
3, $0302, /* Misc Tool */
|
||||
160, $0100 /* GTE */
|
||||
}
|
||||
};
|
@ -14,7 +14,7 @@
|
||||
"gsport": "%npm_package_config_gsport%",
|
||||
"test": "npm run build && build-image.bat %npm_package_config_cadius% && %npm_package_config_gsport%",
|
||||
"build": "npm run build:tool && npm run build:sys16",
|
||||
"build:sys16": "iix compile demo_data.c main.c && iix -DKeepType=S16 link main demo_data keep=App",
|
||||
"build:sys16": "iix compile demo_data.c gte.c main.c && iix -DKeepType=S16 link main demo_data gte keep=App",
|
||||
"build:tool": "%npm_package_config_merlin32% -V %npm_package_config_macros% ../../src/Master.s",
|
||||
"debug": "%npm_package_config_crossrunner% ./App -Debug -CompatibilityLayer"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user