Merge branch 'master' of git://github.com/deater/dos33fsprogs

This commit is contained in:
Vince Weaver 2017-01-17 09:10:48 -05:00
commit d5ef00e9f0
8 changed files with 1374 additions and 1 deletions

View File

@ -36,9 +36,13 @@ SOUND_TEST.BAS: sound_test.bas
$(TXT2BAS) < 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 \ 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 \ 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 A STILL_ALIVE.BAS
$(DOS33) -y glados33.dsk SAVE B OBJECTS.SHAPE $(DOS33) -y glados33.dsk SAVE B OBJECTS.SHAPE
$(DOS33) -y glados33.dsk SAVE B PORTAL_TITLE.HGR $(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 CUBE.BAS
$(DOS33) -y glados33.dsk SAVE A MOUSE_TEST.BAS $(DOS33) -y glados33.dsk SAVE A MOUSE_TEST.BAS
$(DOS33) -y glados33.dsk SAVE A JOYSTICK_TEST.BAS $(DOS33) -y glados33.dsk SAVE A JOYSTICK_TEST.BAS
$(DOS33) -y glados33.dsk BSAVE -a 0xc00 asm/STILL_ALIVE.BIN
clean: clean:
cd asm && make clean
rm -f *~ *.BAS *.SHAPE sound_test.bas shape_test.bas *.lst rm -f *~ *.BAS *.SHAPE sound_test.bas shape_test.bas *.lst

View File

@ -3,3 +3,9 @@ http://pastebin.com/9pQcGnip
https://www.youtube.com/watch?v=bxwgd0PVyQQ https://www.youtube.com/watch?v=bxwgd0PVyQQ
http://www.steamgames.com/v/img/whatsnew/StillAlive.pdf 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
View 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
View 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

View 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;
}

View 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

File diff suppressed because it is too large Load Diff

185
glados3.3/faq.html Normal file
View 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>