mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-25 05:29:34 +00:00
Merge branch 'master' of git://github.com/deater/dos33fsprogs
This commit is contained in:
commit
d5ef00e9f0
@ -36,9 +36,13 @@ SOUND_TEST.BAS: sound_test.bas
|
||||
|
||||
$(TXT2BAS) < sound_test.bas > SOUND_TEST.BAS
|
||||
|
||||
asm/STILL_ALIVE.BIN: asm/still_alive.s
|
||||
cd asm && make
|
||||
|
||||
glados33.dsk: STILL_ALIVE.BAS OBJECTS.SHAPE SHAPE_TEST.BAS SOUND_TEST.BAS \
|
||||
PORTAL.BAS CUBE.BAS PORTAL_TITLE.HGR GLADOS.HGR MOUSE_TEST.BAS \
|
||||
JOYSTICK_TEST.BAS
|
||||
JOYSTICK_TEST.BAS \
|
||||
asm/STILL_ALIVE.BIN
|
||||
$(DOS33) -y glados33.dsk SAVE A STILL_ALIVE.BAS
|
||||
$(DOS33) -y glados33.dsk SAVE B OBJECTS.SHAPE
|
||||
$(DOS33) -y glados33.dsk SAVE B PORTAL_TITLE.HGR
|
||||
@ -49,7 +53,9 @@ glados33.dsk: STILL_ALIVE.BAS OBJECTS.SHAPE SHAPE_TEST.BAS SOUND_TEST.BAS \
|
||||
$(DOS33) -y glados33.dsk SAVE A CUBE.BAS
|
||||
$(DOS33) -y glados33.dsk SAVE A MOUSE_TEST.BAS
|
||||
$(DOS33) -y glados33.dsk SAVE A JOYSTICK_TEST.BAS
|
||||
$(DOS33) -y glados33.dsk BSAVE -a 0xc00 asm/STILL_ALIVE.BIN
|
||||
|
||||
clean:
|
||||
cd asm && make clean
|
||||
rm -f *~ *.BAS *.SHAPE sound_test.bas shape_test.bas *.lst
|
||||
|
||||
|
@ -3,3 +3,9 @@ http://pastebin.com/9pQcGnip
|
||||
|
||||
https://www.youtube.com/watch?v=bxwgd0PVyQQ
|
||||
http://www.steamgames.com/v/img/whatsnew/StillAlive.pdf
|
||||
|
||||
/* Media */
|
||||
https://news.ycombinator.com/item?id=13392173
|
||||
http://www.theregister.co.uk/2017/01/14/apple_2_fan_puts_the_port_in_portal/
|
||||
http://gizmodo.com/hero-coder-adapts-portal-for-the-apple-ii-1791213030
|
||||
http://www.avclub.com/article/guy-made-portal-apple-ii-complete-remade-still-ali-248404
|
||||
|
32
glados3.3/TODO
Normal file
32
glados3.3/TODO
Normal file
@ -0,0 +1,32 @@
|
||||
Open bugs:
|
||||
+ Someone says one of the notes is wrong in still alive
|
||||
+ Fix color change issues (on Apple II, this means ensure always
|
||||
at odd or even screen address)
|
||||
+ Start level with some residual velocity sometimes?
|
||||
+ Can currently walk when falling
|
||||
|
||||
Assuming we port to assembly language:
|
||||
|
||||
+ Paramaterized level descriptions
|
||||
+ 19 levels. Properly paramaterized level open screen
|
||||
+ Method of picking up objects with 'E' button
|
||||
+ Have more than one object
|
||||
+ Change the turret and cube into objects
|
||||
+ Turrets can be knocked over.
|
||||
+ Limit the portals to appearing on walls.
|
||||
Different colors (white vs purple?) if cannot support a portal?
|
||||
+ Mouse support?
|
||||
+ Allow making portals at various angles, multiples of 45 degrees?
|
||||
+ Bouncy blue goo and sliding orange goo?
|
||||
+ Add a walking animation
|
||||
|
||||
Final Level:
|
||||
+ Multiple spheres, countdown timer
|
||||
|
||||
|
||||
Closing Credits:
|
||||
+ Convert to assembly language?
|
||||
+ If not on IIe, then use 40 column mode.
|
||||
Pictures above, text below in that case..
|
||||
Also auto-convert to uppercase?
|
||||
+ Mockingboard AY-3-8910 chiptune version of song
|
12
glados3.3/asm/Makefile
Normal file
12
glados3.3/asm/Makefile
Normal file
@ -0,0 +1,12 @@
|
||||
all: STILL_ALIVE.BIN
|
||||
|
||||
STILL_ALIVE.BIN: still_alive.o
|
||||
ld65 -o STILL_ALIVE.BIN still_alive.o -C ./apple2_c00.inc
|
||||
|
||||
still_alive.o: still_alive.s
|
||||
ca65 -o still_alive.o still_alive.s -l still_alive.lst
|
||||
|
||||
clean:
|
||||
rm -f *.lst *.o *~ STILL_ALIVE.BIN speaker_timing
|
||||
|
||||
|
12
glados3.3/asm/apple2_c00.inc
Normal file
12
glados3.3/asm/apple2_c00.inc
Normal file
@ -0,0 +1,12 @@
|
||||
MEMORY {
|
||||
ZP: start = $00, size = $1A, type = rw;
|
||||
RAM: start = $C00, size = $8E00, file = %O;
|
||||
}
|
||||
|
||||
SEGMENTS {
|
||||
CODE: load = RAM, type = ro;
|
||||
RODATA: load = RAM, type = ro;
|
||||
DATA: load = RAM, type = rw;
|
||||
BSS: load = RAM, type = bss, define = yes;
|
||||
ZEROPAGE: load = ZP, type = zp;
|
||||
}
|
74
glados3.3/asm/speaker_timing.c
Normal file
74
glados3.3/asm/speaker_timing.c
Normal file
@ -0,0 +1,74 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
|
||||
long long cycles=0,last=0;
|
||||
int x,y;
|
||||
int f,d;
|
||||
|
||||
f=76; // a (should be 440Hz?)
|
||||
// f=128; // c (should be 261Hz?)
|
||||
d=108; // 1/2 note
|
||||
|
||||
x=f;
|
||||
y=d;
|
||||
|
||||
while(1) {
|
||||
|
||||
//
|
||||
// f=1/T
|
||||
//
|
||||
|
||||
//music_loop:
|
||||
y--; //dey ; Y never set?
|
||||
if (y<0) y=255;
|
||||
cycles+=2;
|
||||
|
||||
cycles+=2;
|
||||
if (y!=0) {
|
||||
cycles++;
|
||||
//goto loop; //bne loop
|
||||
}
|
||||
else {
|
||||
d--; // dec $0301
|
||||
cycles+=6;
|
||||
|
||||
// printf("d=%d cycles=%lld\n",d,cycles);
|
||||
|
||||
cycles+=2;
|
||||
if (d==0) { // beq music_done
|
||||
cycles++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// loop
|
||||
x--; // dex
|
||||
cycles+=2;
|
||||
|
||||
cycles+=2;
|
||||
if (x!=0) { // bne music_loop
|
||||
cycles++;
|
||||
//goto music_loop;
|
||||
}
|
||||
else {
|
||||
x=f; // ldx $0300
|
||||
cycles+=4;
|
||||
|
||||
//jmp click_speaker
|
||||
cycles+=3;
|
||||
|
||||
cycles+=4; //lda $C030 ; click the speaker
|
||||
printf("period=%lld us, f=%lf Hz, should be %lf\n",
|
||||
cycles-last,1023000.0/((cycles-last)*2),
|
||||
1000000.0/880);
|
||||
last=cycles;
|
||||
}
|
||||
}
|
||||
|
||||
printf("Total cycles: %lld, %lf seconds\n",
|
||||
cycles,cycles/1023000.0);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
1046
glados3.3/asm/still_alive.s
Normal file
1046
glados3.3/asm/still_alive.s
Normal file
File diff suppressed because it is too large
Load Diff
185
glados3.3/faq.html
Normal file
185
glados3.3/faq.html
Normal file
@ -0,0 +1,185 @@
|
||||
<html>
|
||||
<head><title>Applesoft Portal FAQ</title></head>
|
||||
|
||||
<body>
|
||||
|
||||
<h1>Applesoft Portal FAQ</h1>
|
||||
|
||||
This project turned out way more popular than I expected. Usually
|
||||
I make a silly video, forward it to a few friends, and maybe send
|
||||
it to hackaday (or adafruit if it involved a raspberry pi).
|
||||
Rarely do I get more than a few thousand hits.
|
||||
<br><br>
|
||||
|
||||
I'm too lazy to make an account on all the sites that covered this,
|
||||
so here's a bunch of responses to questions that came up.
|
||||
|
||||
<ol>
|
||||
<li><b>Why was your announcement click-bait? This isn't a fully
|
||||
playable 3-hour long game!</b>
|
||||
<br><br>
|
||||
I was exagerating for humorous effect, as I really didn't think
|
||||
this would get quite so out of hand popular.
|
||||
The game definitely is
|
||||
playable, though I guess I should have called it more of a
|
||||
"demo" than a "port".
|
||||
<br><br>
|
||||
Also, it's not really traditional click-bait, as I'm not getting
|
||||
any ad revenue from this.
|
||||
<br><br>
|
||||
|
||||
<li><b>Have you tried a BASIC compiler?</b>
|
||||
<br><br>
|
||||
The hackernews commentators seem to understand this best.
|
||||
<br><br>
|
||||
|
||||
The challenge/fun of this project was trying to take something modern
|
||||
and reimplementing it in a medium that seems impossible (see
|
||||
the con-tiki project).
|
||||
<br><br>
|
||||
|
||||
Using a BASIC compiler or using assembly language would definitely
|
||||
make the game run faster/better/allow more features, but at
|
||||
the same time then the project just becomes a standard Apple II
|
||||
2-D platform game (of which there were many, the pinnacle
|
||||
probably being Prince of Persia which is frankly amazing for
|
||||
the hardware it was on).
|
||||
<br><br>
|
||||
|
||||
<li><b>Wow your IIe platinum looks amazing. Did you retrobrite it?</b>
|
||||
<br><br>
|
||||
|
||||
No. I should post a picture, but shielded parts of the case are definitely
|
||||
much much whiter than exposed parts. It's just compared to the tan
|
||||
of non-platinum IIes it looks original.
|
||||
<br><br>
|
||||
|
||||
<li><b>Was it cool being interviewed by theregister?</b><br><br>
|
||||
|
||||
Yes, though mildly disappointed I didn't get referred to as a "boffin".
|
||||
I did find their "The cake is a IIe" tagline particularly inspired
|
||||
<br><br>
|
||||
|
||||
<li><b>Is the Apple II's hires mode as bad as you make it sound?</b><br><br>
|
||||
|
||||
Worse actually. BASIC typically hides most of the complexity from you.
|
||||
I was being difficult by trying
|
||||
to get colored output using the DRAW/XDRAW shapetable support which
|
||||
is a silly thing to even attempt. You'll note in the code I cheated
|
||||
a bit to accomplish this.<br><br>
|
||||
|
||||
I won't admit how much time I wasted trying to get the colors right
|
||||
on my VMW logo on the title screen. If you'll look closely you'll
|
||||
see I had to compromise on at least one of the pixels.
|
||||
<br><br>
|
||||
|
||||
<li><b>You said that it took a week to put this together?</b><br><br>
|
||||
|
||||
Yes, though I had some pre-existing tools (for example the pcx to hgr
|
||||
converter, the shape table compiler, and the disk image writer)
|
||||
that sped up the process. Though they also slowed things down
|
||||
as I wasted time re-writing (and re-indenting) the code as it was
|
||||
old and much of it is coded really inefficiently.
|
||||
<br><br>
|
||||
|
||||
<li><b>Do you really code your webpages by hand?</b><br><br>
|
||||
|
||||
Yes. Using the nano editor. You don't even want to know
|
||||
how I check my e-mail.
|
||||
<br><br>
|
||||
|
||||
<li><b>What's the workflow for how you made this?</b><br><br>
|
||||
|
||||
I edit the text on a Linux box, using a text editor (nano).
|
||||
I use a custom BASIC tokenizer and a dos33 utility to put the files
|
||||
in a disk image (a Makefile handles all this). Then I run things
|
||||
under the Linapple emulator to test. Once it all works I transfer
|
||||
to a USB key which I hook up to the CFFA3000 disk emulator inside
|
||||
of my IIe. If I want to transfer to a floppy I use Copy II plus
|
||||
to the floppy drives in slot #5.
|
||||
<br><br>
|
||||
|
||||
<li><b>This is your second Applesoft game conversion.
|
||||
Do you plan any others?</b>
|
||||
<br><br>
|
||||
No. That doesn't mean it won't happen though.
|
||||
Only certain kind of games map well to this kind of project,
|
||||
and it has to be a game I enjoy playing enough to get a good
|
||||
feel for the gameplay. A certain amount of procrastination
|
||||
is involved too.
|
||||
<br><br>
|
||||
|
||||
<li><b>Why is the disk image called glados33.dsk?</b><br><br>
|
||||
|
||||
It was an obscure joke due to the fact that the disk image
|
||||
is in Apple DOS 3.3 format.
|
||||
<br><br>
|
||||
|
||||
<li><b>Did you like the Portal games?</b>
|
||||
<br><br>
|
||||
Yes. Though I might be alone in thinking this, but
|
||||
I really didn't like the Portal2 Wheatley character much, I found
|
||||
him really annoying.
|
||||
<br><br>
|
||||
|
||||
<li><b>Why is there no cake? Was it a lie?</b>
|
||||
<br><br>
|
||||
It turns out to be really hard to draw a convincing cake,
|
||||
either in ASCII art or in pixel form. After wasting a long
|
||||
time perfecting the companion cube I decided not to bother.
|
||||
<br><br>
|
||||
|
||||
<li><b>Why is the video so grainy in the "Still Alive" credits?</b>
|
||||
<br><br>
|
||||
The Apple II's "NTSC" output was a bit nonstandard at the
|
||||
best of times, even when in 40 column mode. The composite to VGA
|
||||
scan converter I am using can barely display this, and
|
||||
it doesn't really handle the higher-bandwidth 80 column mode
|
||||
well at all. Yes, I was too lazy to find a CRT for purposes
|
||||
of making this video.
|
||||
<br><br>
|
||||
|
||||
|
||||
<li><b>Why does the title screen imply it has been "cracked"?</b>
|
||||
<br><br>
|
||||
Growing up many of the Apple II games I played were from floppies
|
||||
of dubious provenance. To me it feels traditional for there
|
||||
to be some sort of cracked copy protection notice on
|
||||
the title screen.
|
||||
<br><br>
|
||||
|
||||
<li><b>How do you make your videos?</b>
|
||||
<br><br>
|
||||
A cheap Canon camera and a tripod. I edit things together
|
||||
with kdenlive which crashes a lot but mostly works.
|
||||
The biggest issue I have is trying to record my desktop for
|
||||
the emulator scenes, as I can never get the Linux microphone
|
||||
support to work well.
|
||||
<br><br>
|
||||
|
||||
<li><b>Where did you get your time machine?</b>
|
||||
<br><br>
|
||||
Well I traded this crazy looking guy some plutonium...
|
||||
<br><br>
|
||||
No, really, I just like blinky LED lights and it's the perfect
|
||||
project if you like that kind of thing. I was vaguely trying
|
||||
to get it all finished for the BTTF2/2015 anniversary and it was
|
||||
mostly working but I had grand plans to put it in my car for
|
||||
a while but that never happened.
|
||||
You can find out more
|
||||
<a href="http://www.deater.net/weave/vmwprod/hardware/time_circuit/">
|
||||
here</a>.<br><br>
|
||||
There are plans and mostly enough info to build your
|
||||
own copy if you want.
|
||||
A few people have tried, but I've never heard back
|
||||
on any successes.
|
||||
<br><br>
|
||||
|
||||
|
||||
<li><b>Has Valve sent you a cease-and-desist letter yet?</b><br><br>
|
||||
|
||||
Not yet.
|
||||
<br><br>
|
||||
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user