mirror of
https://github.com/lscharen/iigs-game-engine.git
synced 2024-11-25 00:30:48 +00:00
2.8 KiB
2.8 KiB
permalink | layout |
---|---|
/getting-started | page |
Getting Started
- Set Up
- Windows
- Linux
- Native
This tutorial page will walk through the process of setting up your computer to build Apple IIgs applications that leverage the GTE toolset.
Set Up
Windows
Linux
Native
If you are developing directly on an Apple IIgs machine, dowload the GTE-1.0.shk archive into your GS/OS environment. There are several ways of getting the file onto your system.
- Use the NetDisk utility to mount to the remote disk image directly from GS/OS and copy the Tool160 file
- Use ADTPro to transfer the disk image to the apple IIgs and write it onto a physical floppy disk
Installing GTE
Copy the Tool160
file into the System:Tools
folder of your GS/OS boot volume. It is also possible to load the toolset from the application's folder (or any file system location), which will be covered later.
Your First Program
#include <loader.h>
#include <locator.h>
#include <memory.h>
#include <misctool.h>
#include <gte.h>
/* create two solid tiles */
extern Byte tiles[] = { STATIC_TILE(0x00), STATIC_TILE(0xFF) };
/* define a couple of key codes for the arrow keys */
#define LEFT_ARROW 0x08
#define RIGHT_ARROW 0x15
#define UP_ARROW 0x0B
#define DOWN_ARROW 0x0A
Word userId;
Handle dpHandle;
void startUp(void) {
TLStartUp();
userId = MMStartUp();
MTStartUp();
LoadOneTool(160, 0x0100);
dpHandle = NewHandle(0x200L, userId, attrBank + attrPage + attrFixed + attrLocked + attrNoCross, 0);
GTEStartUp((Word) *dpHandle, (Word) 0, userId);
}
void shutDown(void) {
GTEShutDown();
DisposeHandle(dpHandle);
UnloadOneTool(160);
MTShutDown();
MMShutDown(userId);
TLShutDown();
}
void main(void) {
Word keyPress;
int x, y;
/* Start up GTE and its dependencies */
startUp();
/* Create a 256x160 playfield (128 bytes x 160 lines) */
GTESetScreenMode(128, 160);
/* Load in two tiles */
GTELoadTileSet(0, 2, tiles);
/* Fill the tile store with a checkerboard pattern */
for (y = 0; y < GTE_TILE_STORE_HEIGHT; y++) {
for (x = 0; x < GTE_TILE_STORE_WIDTH; x++) {
GTESetTile(x, y, (x + y) & 1);
}
}
/* Enter into the main loop */
x = y = 0;
do {
keyPress = GTEReadControl() & PAD_KEY_CODE;
if (keyPress == LEFT_ARROW && x > 0) x--;
if (keyPress == RIGHT_ARROW && x < 1000) x++;
if (keyPress == UP_ARROW && y > 0) y--;
if (keyPress == DOWN_ARROW && y < 1000) y++;
/* Position the screen and render */
GTESetBG0Origin(x, y);
GTERender(0);
}
while (keyPress != 'Q' && keyPress != 'q');
shutDown();
}