mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-27 17:29:49 +00:00
181 lines
5.0 KiB
Plaintext
181 lines
5.0 KiB
Plaintext
Another / Out-of-This World Demake for Apple II+
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
by Vince "Deater" Weaver (vince@deater.net)
|
|
http://www.deater.net/weave/vmwprod/ootw/
|
|
Disk and LZ4 routines by qkumba
|
|
|
|
+ The game "Another World" was released in 1991.
|
|
Written by Eric Chahi.
|
|
It was eventually ported to many systems (I played it on IBM PC).
|
|
|
|
It even got an Apple IIgs port (the IIgs is 16-bit with fancy
|
|
graphics and sound). However you couldn't play it on
|
|
earlier Apple II systems... until now.
|
|
|
|
+ I was inspired to do this by this amazing PICO-8 version of:
|
|
https://liquidream.itch.io/another-world-survival
|
|
|
|
and thought the Apple II lo-res palette (15 colors, 40x48 graphics)
|
|
might be just barely enough to do it justice.
|
|
|
|
==================
|
|
Game controls:
|
|
==================
|
|
|
|
This info appears while loading too, but if you are in an emulator with
|
|
fast disk access it might not be on the screen long enough to see.
|
|
|
|
D -> - move right (twice to run)
|
|
A <- - move left (twice to run)
|
|
W up - jump
|
|
S down - crouch / pickup
|
|
space - kick / gun
|
|
L - charge weapon
|
|
|
|
During the intro, you can press R to make it repeat forever.
|
|
|
|
Hints for those who have never actually played the original game:
|
|
|
|
+ At initial arrival, hit up a bunch of times to escape the
|
|
tentacle monster. On an original II w/o autorepeat
|
|
you might have to bang on the keyboard a lot.
|
|
+ You can kick some enemies. Crouch-kicking is sometimes
|
|
a bit easier than stand-kicking.
|
|
+ When running (i.e. after pressing left or right twice)
|
|
you can press "up" to run-jump which is faster than
|
|
plain running. That might be useful if you need
|
|
to out-run something.
|
|
+ When you get the gun, use space to fire the laser.
|
|
You can use "L" to charge your gun for special actions.
|
|
Charge a little bit then press "L" (or any key)
|
|
to create a shield.
|
|
Charge a longer time (a few seconds, when the charge
|
|
ball gets bigger) and it will make a giant blast capable
|
|
of destroying doors and shields.
|
|
|
|
|
|
Note: the original Apple II had no up/down buttons, which is why
|
|
you can also use WASD for movement. Different emulators handle
|
|
this differently, but if for some reason up/down is not working
|
|
try using W/S instead.
|
|
|
|
Joystick support: none yet?
|
|
It should be possible, I just haven't had time to implement yet.
|
|
|
|
Keyboard Limitations:
|
|
Note, Apple II has simplistic keyboard support.
|
|
In general it's not possible to read more than one key at a time.
|
|
Additionally, on older models there's no auto-repeat unless you
|
|
hold down the REPT key, which makes running difficult.
|
|
This means it's really not possible to use the keyboard the
|
|
same way as the original game (which had you do things
|
|
like holding down spacebar to charge the gun and then
|
|
firing when you release it. Same for running faster
|
|
by holding left/right and space at the same time).
|
|
|
|
==================
|
|
Development notes:
|
|
==================
|
|
|
|
Ootw Memory map:
|
|
00 zero page
|
|
01 stack
|
|
02 ????
|
|
03 nibble table/disk data
|
|
04-07 GR page0
|
|
08-0b GR page1
|
|
0c-0f background ($c00 = disk load buffer)
|
|
10-13 background overlay
|
|
14-16 loader
|
|
17-bf program-data (41.25k)
|
|
bc-bf earthquake background (shifted)
|
|
c0-cf I/O
|
|
d0-ff ROM
|
|
|
|
|
|
Intro Memory map:
|
|
00 zero page
|
|
01 stack
|
|
02 ????
|
|
03 nibble table/disk data
|
|
04-07 GR page0
|
|
08-0b GR page1
|
|
0c-0f offscreen data ($c00 = disk load buffer)
|
|
10-13 offscreen data2
|
|
14-16 loader
|
|
17-89 program/compressed-data (30.25k)
|
|
90-bf currently decompressed level data (12k)
|
|
c0-cf I/O
|
|
d0-ff ROM
|
|
|
|
|
|
Intro Memory squeeze!
|
|
|
|
10,748 over all graphics in
|
|
10,734 over remove extraneous blank bg image
|
|
8,658 over re-arrange memory map, 42k avail now
|
|
8,562 over move gr_make_quake out of common code
|
|
8,374 over remove extraneous code (mostly put_sprite_flipped)
|
|
5,469 over allow changing bg on fly in sequence
|
|
4,122 over modify cyan frames to be on fly
|
|
2,749 over do same for zappo routines
|
|
2,493 over squish disk loader vars to page 3
|
|
2,165 over horrible hack to auto-go to next image in sequence
|
|
2,114 over move bg loading into seq
|
|
2,053 over make elevator indicator a loop
|
|
1,347 over use LZ4 instead of RLE
|
|
|
|
Gave up, see if we can compress in chunks and decompress, sort of like
|
|
my chiptune player does.
|
|
|
|
|
|
Let's take a 12k region of memory = $3000
|
|
$C000 - $3000 = starting at $9000
|
|
|
|
|
|
ID1 = 1461 2143\
|
|
ID2 = 1759 2687|--- together in 01
|
|
ID3 = 1195 1879/
|
|
ID4 = 2514 8280\--- in 04
|
|
ID5 = 1947 3492/
|
|
ID6 = 2584 3610\ --- in 06
|
|
ID7 = 2834 3606/
|
|
ID8 = 3705 4918 | -- in 08
|
|
ID9 = 4494 5901\ -- in 09
|
|
ID10 = 3397 5558/
|
|
===== ======
|
|
25890 12k
|
|
|
|
|
|
ootw memory squeeze:
|
|
after full rope sequence in: 23065
|
|
make transparent overlays: 13971
|
|
add end-of-l1 cutscene: 26464
|
|
make transparent overlays: 17821
|
|
add in rest of end cutscene 23906
|
|
make those transparent 21236
|
|
|
|
|
|
ootw2 memory squeeze:
|
|
before intro 3872
|
|
after intro 9234
|
|
|
|
|
|
|
|
|
|
L2 Memory map:
|
|
00 zero page
|
|
01 stack
|
|
02 ????
|
|
03 nibble table/disk data
|
|
04-07 GR page0
|
|
08-0b GR page1
|
|
0c-0f offscreen data ($c00 = disk load buffer)
|
|
10-13 offscreen data2
|
|
14-16 loader
|
|
|
|
|
|
c0-cf I/O
|
|
d0-ff ROM
|
|
|