0x10c-inspired space game based on the DCPU-16
git clone git://squid-tech.com/lonestar.git
Log | Files | Refs | README

commit 022fd5eebc4a8c7730da6028e61dd3aab25cc827
parent 99b4b1979766a107518e10cd65f2b0b10775cedd
Author: Josh Moore <jxm5210@g.rit.edu>
Date:   Mon, 18 Nov 2019 19:38:55 -0500

Create README.md
AREADME.md | 47+++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+), 0 deletions(-)

diff --git a/README.md b/README.md @@ -0,0 +1,47 @@ +# LoneStar +It's the year 1988, and Nya Elektriska has introduced the SPC2000 Suspension Chamber, claiming that their device will allow safe and immediate travel to the distant future. You decided against trusting your life to some shady corporation, and as a result, you are one of the few humans not trapped in suspended sleep for 0x10^c years. Now there's no one to tell "I told you so" and you must cope with living in the time that your peers left behind. + +In LoneStar, you are not a billionaire or an officer in a galactic military. You are just some guy roaming the solar system in your 1986 J-TEK StarCruiser (aka "Space Winnebago"). You have no high-falutin' laser turrets, warp drives, or forcefields. What you do have, however, are some killer road tunes and your trusty DCPU-16 personal computing system. + +## Building/Running +Binaries to run the game will be provided when the demo is officially released. + +To build from source: Clone this repository, import src/LoneStar into Unity, then Build/Run. + +## Gameplay +***Note:*** This game is a work-in-progress, and it's currently little more than a tech demo. Expect the code, this README, and/or core gameplay to change significantly. + +This game will be primarily focused on the [DCPU-16](https://github.com/lucaspiller/dcpu-specifications/blob/master/dcpu16.txt) and its interactions with external hardware devices. For example, you could program the DCPU to navigate your ship, transmit/receive data through communications modules, play games, and pretty much anything else you can think of! See section "Hardware" for more information. + +Click the red power button on the DCPU-16 to turn it on. When the CPU turns on, it will load whatever is in `rom.bin` to address 0x0000 and start executing it. The DCPU-16 will only load the first 0x10000 words into memory. If you are running the game from the Unity Editor, `rom.bin` will be located in the `bin/` folder. If you are running a standalone release of the game, `rom.bin` must be in the same directory as the game executable. Official releases of the game will always ship with a "stock" `rom.bin` that contains a basic kernel and drivers for officially-supported hardware. + +You can replace `rom.bin` with your own binaries. To do this, you will need an assembler. I recommend [DAS](https://github.com/jonpovey/das), because it is v1.7-compliant, and it's what I use for DASM development. + +To plug in a hardware device, click the device. When your crosshair gets slightly bigger, click one of the four hardware ports on the front of the DCPU. The device will be connected to the port you have selected, and the DCPU will be able to control the device via hardware interrupts. **Remember** that the DCPU-16 does not support hot-plugging/unplugging hardware, so you must power it off before plugging/unplugging any devices! + +LoneStar "supports" multiplayer, but it is currently buggy/broken. For now, just click "LAN Host" at the top left to start the game. + +## Hardware +The DCPU-16 is fully emulated in the game. The emulation in the game is compliant with spec v1.7. Please note that there are currently a few minor bugs and unimplemented opcodes in the emulation - these will be fixed very soon. + +Keyboard input is sent to a 16-word circular buffer starting at address `0x9000`. + +The built-in screen is a very simple 320x200 monochrome bitmap starting at address `0x8000`. Each 16-bit word corresponds to a row of 16 pixels on the screen. + +Unity Developers: Any Unity `GameObject` that implements the hardware API can be a pluggable hardware device! All you need to do is implement the `HWI()` function, which responds to hardware interrupts from the DCPU-16, and the `HWQ()` function, which responds to a request for information from the DCPU-16. This really is very powerful and extensible, and I look forward to seeing what kind of devices the community comes up with! Please see the included devices for examples on how to make your own devices. + +## Planned Features +* Ship control module that can be plugged into the DCPU-16 and used to drive the ship +* Packet radio module for inter-ship communications. This will be a 1200-baud Bell 202 modem that will be used for sending messages, data, etc. It will make modem noises. See [Packet radio - Wikipedia](https://en.wikipedia.org/wiki/Packet_radio) for more information on packet radio (it's cool) +* Floppy drives for storing data larger than 0x10000 words +* A procedurally generated solar system with planets that can be landed on +* Full multiplayer (sort of "Minecraft style", where someone hosts a server that players connect to) +* VR support +* ...and more! + +## Features to Not Suggest +* Ship Building - I recommend Kerbal Space Program as a good spaceship-building game. +* More RAM/faster processor/expanded instruction set/etc. - Suggestions such as these will be referred to DCPU-16 spec v1.7. + +## Contributing +TODO: information for contributors - need to gauge interest/requirements