Both sides previous revisionPrevious revisionNext revision | Previous revision |
nostromo:top [2024/07/16 20:22] – [UPDATES] robert | nostromo:top [2025/03/19 19:32] (current) – [Walking Through The Code] robert |
---|
{{:nostromo:1156224-ax_2.jpg?direct&200|}} {{:nostromo:nostromo1.gif?nolink|}} | {{:nostromo:1156224-ax_2.jpg?direct&200|}} {{:nostromo:nostromo1.gif?nolink|}} |
| |
AX-2: Uchuu Yusousen Nostromo (Space Freighter Nostromo) \\ | **AX-2: Uchuu Yusousen Nostromo** (//Space Freighter Nostromo//) |
Designed and Programmed for the Commodore Pet 2001 by Akira Takiguchi in 1981 \\ | |
Ported to the NEC-PC6001 by Masakuni Mitsuhashi aka Hiromi Ohba aka Mitsu in 1982 \\ | |
Cover Artwork by Masashi Iwasaki \\ | |
Published by ASCII Entertainment in Japan \\ | |
Ported to Radio Shack TRS-80 Micro Color Computer MC-10 by Jim Gerrie in 2015 and 2018 \\ | |
Ports to Tandy Radio Shack Color Computer and Dragon Data Dragon 32/64 underway \\ | |
| |
===== NEC PC-6001 PORT ===== | Designed and Programmed for the Commodore Pet 2001 by **Akira Takiguchi** in 1981 |
| |
| PROCESSOR | NEC microPD780C-1 (Zilog Z80-compatible) Microprocessor (MPU) @ 3.8MHz | | ===== NEC PC-6001 Port ===== |
| VIDEO | Motorola M5C6847P-1 (MC6847-Compatible) Video Display Generator (VDG) | | |
| AUDIO | General Instruments AY-3-891x Programmable Sound Generator (PSG) | | |
| FIRMWARE | Microsoft / NEC N60 BASIC ROM (20KB) | | |
| MAIN STORAGE | 16KB - 32KB RAM | | |
| EXTERNAL STORAGE | ROM Cartridge, Cassette | | |
| CONTROLS | "chiclet" Keyboard, Digital Joysticks (not used in AX-2 Nostromo) | | |
| |
Memory Layout: [[NOSTROMO Memory Map]] \\ | Ported to the NEC-PC6001 by **Masakuni Mitsuhashi** aka **Hiromi Ohba** aka **Mitsu** in 1982 |
N60 BASIC Listing: [[NOSTROMO.BAS]] \\ | |
Z80 Machine Code: [[NOSTROMO.Z80]] \\ | |
| |
**Nostro-19xx-Mode_1,_Page_1-.cas** available from the [[https://archive.org/details/NEC_PC_6001_TOSEC_2012_04_23|TOSEC NEC PC6001 2012-04-23]] collection at [[http://archive.org]] | Cover Artwork by **Masashi Iwasaki** |
| |
===== MC-10 PORTS ===== | Published by **ASCII Entertainment** in Japan |
| PROCESSOR | Motorola MC6803 @ 0.89 MHz | | |
| VIDEO | Motorola MC6847 Video Display Generator (VDG) | | |
| AUDIO | 1-bit DAC | | |
| FIRMWARE | Microsoft BASIC ROM (8KB) | | |
| MAIN STORAGE | 4KB RAM | | |
| EXTERNAL STORAGE | ROM Cartridge, Cassette | | |
| CONTROLS | 48-key "chiclet" Keyboard | | |
| |
2015-11 NOSTROMO: [[https://jimgerrie.blogspot.com/2015/11/]] \\ | * [[NEC PC-6001 Port]] |
2018-05 NOSTRO: [[https://jimgerrie.blogspot.com/2018/05/uchuu-yusousen-nostromo.html]] | * Memory Layout: [[NOSTROMO Memory Map]] |
| * N60 BASIC Listing: [[NOSTROMO.BAS]] |
| * Z80 Machine Code: [[NOSTROMO.Z80]] |
| * [[http://clrhome.org/table/|Z80 instruction set - ClrHome]] |
| * [[https://readonlymemory.vg/ascii-corporation/|ASCII Corporation - Read-Only Memory]] |
| * [[http://boxequalsart.com/timeline-page.html|Timeline Page| BOX=ART]] \\ |
| |
===== COCO / DRAGON PORT ===== | ===== MC-10 Ports ===== |
| PROCESSOR | Motorola MC6809 or Hitachi HD6309 @ 0.89/1.789 MHz | | Ported to Radio Shack **TRS-80 Micro Color Computer MC-10** by **Jim Gerrie** in 2015 and 2018 |
| VIDEO | Motorola MC6847, 6847T1 Video Display Generator (VDG) or TCC1014 Advanced Color Video Chip (ACVC) Graphics Interrupt Memory Enhancement (GIME) | | |
| AUDIO | 1-bit DAC, 6-bit DAC, Cassette and Cartridge pass-through multiplexer, many expansions detailed on [[:Tandy Color Computer:]] | | |
| FIRMWARE | Microsoft Color BASIC ROM (8KB), Extended BASIC (8KB), Disk BASIC (8KB), Super Extended BASIC (8KB) | | |
| MAIN STORAGE | 4KB - 512KB RAM | | |
| EXTERNAL STORAGE | ROM Cartridge, Cassette, Floppy, Hard Disk | | |
| CONTROLS | 53/57-key "chiclet", "melty", or full-key Keyboard, Analog Joysticks, Digital Joysticks | | |
| |
==== UPDATES ==== | * [[MC-10 Ports]] |
| * 2015-11 NOSTROMO: [[https://jimgerrie.blogspot.com/2015/11/]] |
| * [[https://github.com/jggames/trs80mc10/tree/master/quicktype/Arcade/Nostromo|MC-10 NOSTROMO.BAS]] |
| * 2018-05 NOSTRO: [[https://jimgerrie.blogspot.com/2018/05/uchuu-yusousen-nostromo.html]] |
| * [[https://github.com/jggames/trs80mc10/tree/master/quicktype/Arcade/Nostro|MC-10 NOSTRO.BAS]] |
| |
| ===== CoCo / Dragon Port ===== |
| |
**NOSTROMO** feels much more like a game now that the following work: | Port underway for the **TRS-80 Color Computer** "CoCo" and **Dragon Data Dragon 32/64** |
* The alien stalks the corridors around the storage rooms | |
* The crew can knock down walls to break into store rooms | |
* The crew can only carry five items max | |
* The crew can drop items in the escape shuttle | |
* The tally of items carried and stored in the shuttle now update | |
| |
Some of the remaining work to complete include: | * [[CoCo Dragon Port]] |
* Timer display (timer coded, display remaining) | * [[Updates]] |
* The time expired screen | * [[Source Code]] |
* The alien killed you screen | * [[Screenshots]] |
* The level completed screen | |
* Score tally | |
* Next level goal logic to update number of items needed of each type | |
* Game configuration interface to choose video, audio, controls, expansions | |
* 17 x AY-3-8910 audio cues playable through sound drivers | |
* Joystick control (written, needs to be integrated) | |
* Hallway display 1 and 2 for time trial | |
* The alien animation screens for level 7 and beyond | |
* The game over play again screen | |
* The ASCII and AX-2 logo screens (already mocked up) | |
* The NOSTROMO intro screen (already mocked up) | |
* Do I need to add a PMODE 3 screen for Dragon output? | |
* Debug the item placement to fix the occasional mis-placement into the wall | |
* Correct the wall display blocks for SG4 mode after the CoCoVGA font change | |
* Take advantage of red/blue artifact colors on RG6 screen) | |
* Add artifact color switch | |
* High score display for screen shots | |
* Help Key mode for later levels | |
==== CODE ==== | |
| |
{{:nostromo:nostromo-repo-20230827.png|Repo stats 20230827}} | ===== Walking Through The Code ===== |
| |
All "code-" file prefixes have been changed to "ax2-" for starters. | As I have worked through the NEC PC6001 port I have found many nooks and crannies to explore and decisions about how to my port to the CoCo along the way. |
| |
Just the top-level source directory content needed to build the game are shown below. | The NEC PC-6001 loads the NOSTRO cassette data into the BASIC program memory. |
| |
Additional repo directories of various tests, mockups, and such created along the way are not shown, but are represented in the repo statistics above. | The cassette file continues past the last line of tokenized BASIC code, loading Z80 binary machine code and more data into the memory after the lines of BASIC. |
| |
The code below gives you an example of where I got to by the mid-2023: | I've decided to build this table to organize my findings and help complete what's left to port. |
| |
^ ^ CODE MODULE ^ DESCRIPTION ^ | ^ BASIC Lines ^ Z80 Addresses ^ Purpose ^ |
| ☐ | [[https://exileinparadise.com/AX2/*.BAS|*.BAS]] | Helper BASIC program for DOS command to run NOSTROMO | | | 1 - 9 | | [[Copyright]] REMarks | |
| ☐ | [[https://exileinparadise.com/AX2/ACVC/ax2-acvc-v00.asm|ax2-acvc-v00.asm]] | Video driver for CoCo3 ACVC / GIME | | | 10 | | [[One Time Setup]] | |
| ☐ | [[https://exileinparadise.com/AX2/CGROM60/ax2-cgrom60-v04.asm|ax2-cgrom60-v04.asm]] | Modified NEC PC-6001 font data | | | | E164 - E17D | [[Memory Setup]] | |
| ☐ | [[https://exileinparadise.com/AX2/COCOPSG/ax2-cocopsg-v00.asm|ax2-cocopsg-v00.asm]] | Audio driver for CoCoPSG by Ed "Zippster" Snider | | | | E240 - E255 | [[Replace Line 10]] | |
| ☐ | [[https://exileinparadise.com/AX2/COCOVGA/ax2-vdgvga-v00.asm|ax2-vdgvga-v00.asm]] | Video driver for the CoCo 1/2/Dragon MC6847 Video Display Generator (VDG) in Semigraphics 4 (SG4) mode with custom NEC PC6001-like font using CoCoVGA by Brendan Donahe | | | 80-90 | | [[Finish Setup]] | |
| ☐ | [[https://exileinparadise.com/AX2/CONFIG/ax2-config-v00.asm|ax2-config-v00.asm]] | Configuration menu and functions | | | :!: more ... | | | |
| ☐ | [[https://exileinparadise.com/AX2/DCSG/ax2-dcsg-v00.asm|ax2-dcsg-v00.asm]] | Audio Driver for Texas Instruments Digital Complex Sound Generator (DCSG) SN76489N in the Game Master Cartridge | | | 5000 | | [[Find Next Screen]] | |
| ☐ | [[https://exileinparadise.com/AX2/GMC/ax2-gmc-v00.asm|ax2-gmc-v00.asm]] | Audio driver for Game Master Cartridge by John "Tuxdriver" Linville | | |
| ☐ | [[https://exileinparadise.com/AX2/IRQ/ax2-timer-v00.asm|ax2-timer-v00.asm]] | Utility timer countdown code | | |
| ☐ | [[https://exileinparadise.com/AX2/JOY/ax2-joy-v00.asm|ax2-joy-v00.asm]] | Controller driver for CoCo analog joystick ports | | |
| ☐ | [[https://exileinparadise.com/AX2/KEYSCN/ax2-keyscn-v01.asm|ax2-keyscn-v01.asm]] | Controller driver for CoCo and Dragon 53/57-key keyboard [[:tandy_color_computer:keyscn]] [[:tandy_color_computer:keyscn2]] | | |
| ☐ | [[https://exileinparadise.com/AX2/MIDI/ax2-midi-v00.asm|ax2-midi-v00.asm]] | Audio driver for CoCo MIDI / MIDI Maestro by Jim "go4retro" Brain | | |
| ☐ | [[https://exileinparadise.com/AX2/MMMPI/ax2-mmmpi-v00.asm|ax2-mmmpi-v00.asm]] | Audio driver and utility code for MEGA-mini Multi-Pak Interface (MMMPI) by Ed "Zippster" Snider | | |
| ☐ | [[https://exileinparadise.com/AX2/MPI/ax2-mpi-v00.asm|ax2-mpi-v00.asm]] | Utility driver for Multi-Pak Interface (MPI) | | |
| ☐ | [[https://exileinparadise.com/AX2/ONEBIT/ax2-onebit-v00.asm|ax3-onebit-v00.asm]] | Audio driver for CoCo 1-bit DAC sound "beeper" | | |
| ☐ | [[https://exileinparadise.com/AX2/OPL3/ax2-opl3-v00.asm|ax2-opl3-v00.asm]] | Audio driver for Yamaha OPL3 (YMF-262) FM-synthesis in the MEGA-mini Multi-Pack Interface | | |
| ☐ | [[https://exileinparadise.com/AX2/ORCH90/ax2-orch90-v00.asm|ax2-orch90-v00.asm]] | Audio driver for the Orchestra90/CC stereo 8-bit DAC cartridge | | |
| ☐ | [[https://exileinparadise.com/AX2/PIA/ax2-pia0-v00.asm|ax2-pia0-v00.asm]] | I/O driver for the Peripheral Interface Adapter (PIA) used in Keyboard, Multiplexer, and Interrupts | | |
| ☐ | [[https://exileinparadise.com/AX2/PIA/ax2-pia1-v00.asm|ax2-pia1-v00.asm]] | I/O driver for the Peripheral Interface Adapter (PIA) used for the VDG, DAC Audio, Joystick ADC, RS232, Cassette, and Interrupts | | |
| ☐ | [[https://exileinparadise.com/AX2/PSG/ax2-psg-v00.asm|ax2-psg-v00.asm]] | Audio driver for the General Instruments AY-3-8910 Programmable Sound Generator used in many CoCo audio devices | | |
| ☐ | [[https://exileinparadise.com/AX2/RND/ax2-rnd-v00.asm|ax2-rnd-v00.asm]] | Utility pseudo-random number generator (PRNG) for placing resources in main game level | | |
| ☐ | [[https://exileinparadise.com/AX2/SAM/ax2-sam-v00.asm|ax2-sam-v00.asm]] | I/O driver for the Synchronous Address Multiplexer (MC6883) | | |
| ☐ | [[https://exileinparadise.com/AX2/SIXBIT/todo-dac-v00.asm|todo-dac-v00.asm]] | Audio driver for CoCo 6-bit DAC sound | | |
| ☐ | [[https://exileinparadise.com/AX2/SSC/ax2-ssc-v00.asm|ax2-ssc-v00.asm]] | Audio driver for the Speech / Sound Cartridge with Narrator SP0256-AL2 and AY-3-891x PSG | | |
| ☐ | [[https://exileinparadise.com/AX2/SSG/ax2-ssg-v00.asm|ax2-ssg-v00.asm]] | Audio driver for the Yamaha YM2149 Software-Controlled Sound Generator (SSG) used in the CoCo PSG | | |
| ☐ | [[https://exileinparadise.com/AX2/SYMPHONY12/ax2-symphony12-v00.asm|ax2-symphony12-v00.asm]] | Audio driver for the Speech Systems Symphony-12 / Philharmonic-12 by Jim "go4retro" Brain | | |
| ☐ | [[https://exileinparadise.com/AX2/VDG/ax2-vdgrg6-v01.asm|ax2-vdgrg6-v01.asm]] | Video driver for the CoCo 1/2/Dragon MC6847 Video Display Generator (VDG) in Resolution Graphics 6 (RG6) mode (aka PMODE4) | | |
| ☐ | [[https://exileinparadise.com/AX2/VDG/ax2-vdgsg4-v00.asm|ax2-vdgsg4-v00.asm]] | Video driver for the CoCo 1/2/Dragon MC6847 Video Display Generator (VDG) in Semigraphics 4 (SG4) mode | | |
| ☐ | [[https://exileinparadise.com/AX2/VDG/ax2-vdgt1-v00.asm|ax2-vdgt1-v00.asm]] | Video driver for the CoCo 1/2/Dragon MC6847 Video Display Generator (VDG) in Semigraphics 4 (SG4) mode with VDG Lowercase font support | | |
| ☐ | [[https://exileinparadise.com/AX2/build.sh|build.sh]] | Utility script that assembles the code and packages it as a CoCo DSK file | | |
| ☐ | [[https://exileinparadise.com/AX2/debug.sh|debug.sh]] | Utility script to test the work-in-progress code using MAME debugger | | |
| ☐ | [[https://exileinparadise.com/AX2/nostromo.asm|nostromo.asm]] | The AX-2 Nostromo N60 BASIC/Z80 machine code port-in-progress to 6809 assembly | | |
| ☐ | [[https://exileinparadise.com/AX2/run.sh|run.sh]] | Utility script to run the game in MAME from a menu to test 5 different video modes | | |
| ☐ | [[https://exileinparadise.com/AX2/template3.asm|template3.asm]] | Source code template v3 | | |
| |
===== SCREENSHOTS ===== | |
Click for full size ... | |
| |
^ MACHINE / MODE ^ COPYRIGHT SCREEN ^ MAIN LEVEL ^ | |
| CoCo 1/2 VDG RG6 | {{:nostromo:2022-04-08-vdgrg6-copyright.png?direct&400|}} | {{:nostromo:2022-04-08-vdgrg6-main.png?direct&400|}} | | |
| CoCo 3 ACVC 256x192x16 | {{:nostromo:2022-04-08-acvc-copyright.png?direct&400|}} | {{:nostromo:2022-04-08-acvc-main.png?direct&400|}} | | |
~ 2022-04-08 via MAME | |
| |
===== SEE ALSO ===== | |
[[http://boxequalsart.com/timeline-page.html|Timeline Page| BOX=ART]] \\ | |
[[http://clrhome.org/table/|Z80 instruction set - ClrHome]] \\ | |
[[https://readonlymemory.vg/ascii-corporation/|ASCII Corporation - Read-Only Memory]] \\ | |
| |
===== RTS ===== | |
Return to [[:Top]] | Return to [[:Top]] |
| |