Switch to cc65 for building

develop
Christophe Parent 2024-05-01 14:10:53 -07:00
parent a89ac25a7b
commit 48380aa02c
6 changed files with 1884 additions and 1791 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
src/chars.bin
src/*.o
target/

24
LICENSE Normal file
View File

@ -0,0 +1,24 @@
Super Mario Bros. Corrected is published with no license. It is distributed as is in the hope that it will be useful, but WITHOUT ANY WARRANTY.
---
Credits:
* Original work on Super Mario Bros.: Copyright 1985 Nintendo
* Original work on disassembly: Copyright 2012, 2015 doppelganger
* Additional work: Copyright 2024 Christophe Parent
---
Original words from doppelganger (doppelheathen@gmail.com):
There are so many people I have to thank for this, and without their help this would
probably not be possible. So I thank all the peeps in the nesdev scene whose insight into
the 6502 and the NES helped me learn how it works (you guys know who you are, there's no
way I could have done this without your help), as well as the authors of x816 and SMB
Utility, and the reverse-engineers who did the original Super Mario Bros. Hacking Project,
which I compared notes with but did not copy from. Last but certainly not least, I thank
Nintendo for creating this game and the NES, without which this disassembly would
only be theory.
Update: removed residual note under ChkStart label. Thanks to ShaneM for pointing out
the error.

View File

@ -1,3 +1,54 @@
# super-mario-bros-corrected
# Super Mario Bros. Corrected
Super Mario Bros. with as many bugs and inaccuracies corrected as possible. Includes every optimization from super-mario-bros-optimized.
Super Mario Bros. with as many bugs and inaccuracies corrected as possible; includes every optimization from Super Mario Bros. Optimized.
![Super Mario Bros. Corrected in action](/demo.png)
## Usage
### Requirements
cc65 must be installed on your system; the oldest supported version is `2.18`. No other dependencies are required.
Additionally a file containing the graphics for the original Super Mario Bros. game must be present on your system. This file is not provided.
### Installing
Clone this repository locally:
```shell
$ git clone https://forge.thatspaceandtime.org/ooxie/super-mario-bros-corrected.git super_mario_bros_corrected
$ cd super_mario_bros_corrected
```
Copy the graphics file:
```shell
$ cp <path_to_the_graphics_file> src/chars.bin
```
Create the target directory:
```shell
$ mkdir target
```
### Building
To build the binary, execute:
```shell
$ cl65 -t nes -o target/super_mario_bros_corrected.nes -C src/linker.cfg src/main.asm
```
### Running
To run the game, open the file `target/super_mario_bros_corrected.nes` in your favorite NES emulator. Alternatively you can run it on original hardware.
### Playing
Refer to the original manual for Super Mario Bros.
## License
The source code of this project is not licensed, as the original work it is based on is not (see [LICENSE](/ooxie/super-mario-bros-corrected/src/branch/master/LICENSE)).

BIN
demo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

19
src/linker.cfg Normal file
View File

@ -0,0 +1,19 @@
MEMORY {
ZP: file = "", start = $0000, size = $0100;
OAM: file = "", start = $0200, size = $0100, define = yes;
RAM: file = "", start = $0300, size = $0500;
HDR: file = %O, start = $0000, size = $0010, fill = yes;
PRG0: file = %O, start = $8000, size = $7FFA, fill = yes, fillval = $FF;
PRGV: file = %O, start = $FFFA, size = $0006, fill = yes, fillval = $FF;
CHR: file = %O, start = $0000, size = $2000, fill = yes, fillval = $FF;
}
SEGMENTS {
ZEROPAGE: load = ZP, type = zp, optional = yes;
SPRITE: load = OAM, type = bss, optional = yes;
BSS: load = RAM, type = bss, optional = yes;
HEADER: load = HDR, type = ro;
STARTUP: load = PRG0, type = ro;
VECTORS: load = PRGV, type = ro;
CHARS: load = CHR, type = ro, optional = yes;
}

File diff suppressed because it is too large Load Diff