Compare commits

..

No commits in common. "develop" and "master" have entirely different histories.

6 changed files with 2 additions and 17292 deletions

3
.gitignore vendored
View File

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

24
LICENSE
View File

@ -1,24 +0,0 @@
Super Mario Bros. Optimized 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,54 +1,3 @@
# Super Mario Bros. Optimized # super-mario-bros-optimized
Super Mario Bros. technically optimized as much as possible. Super Mario Bros. technically optimized as much as possible.
![Super Mario Bros. Optimized 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-optimized.git super_mario_bros_optimized
$ cd super_mario_bros_optimized
```
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_optimized.nes -C src/linker.cfg src/main.asm
```
### Running
To run the game, open the file `target/super_mario_bros_optimized.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-optimized/src/branch/master/LICENSE)).

BIN
demo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -1,19 +0,0 @@
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;
}

17193
src/main.asm

File diff suppressed because it is too large Load Diff