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
|
$(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
|
||||||
|
|
||||||
|
@ -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
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