[stella] New project - RPG engine

Subject: [stella] New project - RPG engine
From: emooney1@xxxxxxxx (Erik K Mooney)
Date: Wed, 30 Jul 1997 03:41:24 -0400
I still can't force myself to go any further on the Invaders clone, but I
can
start a whole new project: the engine for an RPG.

Obviously, the biggest problem is space: how to cram a game the size of
NES Zelda or Final Fantasy into 4k.... well, first off I'm aiming for a
16k bankswitched game.  I can fit the world maps and their display kernel
into one 4k bank, text messages, allowing for a reasonably deep plot,
into
a second bank, the monster graphics and code for battles into a third
bank
(think separate screens for monster battles, a la Final Fantasy, Dragon
Warrior,
or Ultima 3-4, not realtime like Zelda), and everything else (status bar
display
kernel, processing player movement/console switches, etc) into the last
bank.

For the world, I'm using a "screens" paradigm, where I can re-use a
screen over
again for 22 bytes of ROM.  Each screen consists of 14 rows, broken into
three blocks of four rows each separated by two "special" rows.  Each
three-row
block is 12 bytes and can be reused as often as I want.. so it's not hard
to
make a generic "forest" block with a few trees and reuse that, or a block
with 
a few houses as a "town" block.  The two special rows are used for stuff
like
shops, talking to townspeople, initiating specific monster battles, and
so on.
The bottommost four-row block can be skipped, and four (or more) lines of
text could be displayed in its place.

Each row consists simply of a sprite type, a horizontal position, and a
NUSIZ/
REFP value... so a complete tiling engine like the NES does is undoable,
but
I can do some pretty convincing fakes with multiple copies of sprites. 
Think
outdoor Zelda 1 scenes minus the monsters, and that's pretty much what
I'm
aiming for.

In addition to the sprites (player 1 is used for all the background
objects, leaving
player 0 for the player), I'm set up to use a playfield.  Because of
various factors
involving storage space and cycles, I need to fit the entire playfield
data into one
page, limiting me to six different playfields used throughout the game. 
This is
enough, I think... if you look closely at Legend of Zelda's dungeons,
Nintendo did
quite a bit of floor pattern reuse without being extremely obvious.  Each
of my
screens can use any of the six maze types, and any three of the 42 block
types,
allowing quite a number of combinations.

Space:  as I said, the world will fit into 4k (16 pages.)  Two pages for
the display
kernel, one for the maze data, two for sprite data (each sprite takes 15
bytes -
10 GRP1 lines plus a color every other line - this allows 34 different
sprites, should
be enough), two for the block data, eight for the screen data, one for
tables and other
misc data.  I have 2kb reserved for screen data... each screen takes 21
bytes
of that plus one in the tables page, so I can fit 97 screens in the
world.  By
comparison, Legend of Zelda is 128 screens in the overworld and about 150
total
in the dungeons, so I'm not too far behind.  Also, each of Zelda's
screens is 16 x 12
tiles, while mine are 20 x 14.  I have room for a 32-line status bar at
the top
of the screen, again similar to Zelda.

I'm aiming for a Dragon Warrior-style game, with one player character
(not a party),
with Zelda-style outdoor scenes and dungeon maps, and Final Fantasy-style
battle scenes.

Anyways, I obviously can't do this entire game myself.  This could become
a real
team project here, if you guys are willing to help.  A text-display
routine would be
helpful... graphics design would be nice (the sprites are 10 lines, with
a color
change allowed every other line, and any NUSIZ value is allowed for the
sprites... the player also will be 10 lines, but allow a color change
every line) and so
on.  I don't want any plotlines or storyboards yet, though a world map
would be
usable.  I hope to be able to release the game as a 16k cartridge, likely
with 
password savegames... "Superchip" RAM doesn't (yet) seem necessary.

Attached is the current state of the kernel.. it doesn't do much yet, but
the
infrastructure is there.  Don't be fooled by how chaotic it looks.. the
code is
definitely there.  I'm just using that short name cause it's easy and
quick
to type :)  I gotta clean up those HMOVE lines, and I've only drawn one
sprite so far =) but put a little imagination into it.

begin 644 r.bin
M>-BB_YJI`)4`RM#[J?^-@0*-@P(@6?$@+/`@0O`@0_`@1/`@7/`@2/%,%_"I
M`H4"A0"%`H4"J2R-E@*I`(4"A0!@8&"@`(2&J?2%A[&&A8"@`[&&A8+(L8:%
M@V"MA`+0^X4"A0&%"(4)A1R%!Z(?RH4"$/N@`80*L8:%",BQAH4)(,'PI888
M:06%@J6':0"%@R#-\*`(L8:%@LBQAH6#(,'PI888:0J%@J6':0"%@R#-\*`-
ML8:%@LBQAH6#(,'P8*D$A8D@S?#&B=#Y8(4"IH"]`/.%#;T!\X4.O0+SA0^@
M`(0<L8*J*?"%A(HI#QAI_(6%YH*Q@JJ]`/^%(84"*0^JX`40".KJZLH0_841
MYH*Q@H4%A0R@#HHP"CCI!:KJRA#]A1&%`H4JL82%!XBQA(4<B+&$A2N(A0*%
M'!#GYH*E@!AI`X6`8*DCC98"J0&%`:V$`M#[A0)@8/__________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____\/]_,```,```,*J`,`"`,%7```#```#_,``#,``#,`P#,`P!,```\/]_
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M_____________________________________________P`ZA`#X`!```/@`
M$@`,^````````/______________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M______________________________\``0$``@,``P8`!`@`"04`"04`!08`
M``#_________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M________________^[\L[_\J_GXF?#PD/!@,________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________`''Q8N)3TT3$-;4FIA>7"'GY:MK_____________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M________________________________________________________`/``
!\```
`
end

--
Archives updated once/day at http://www.biglist.com/lists/stella/archives/
Unsubscribing and other info at http://www.biglist.com/lists/stella/stella.html

Current Thread