mirror of
https://github.com/lscharen/iigs-game-engine.git
synced 2024-11-29 11:50:25 +00:00
2.5 KiB
2.5 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
Your First Program
#include <loader.h>
#include <locator.h>
#include <memory.h>
#include <misctool.h>
#include <gte.h>
/* tile data stored in tiles.c */
extern Byte tiles[];
/* 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();
}