Comments (2)
Current memory layout
- $8000-$87BF: Sprites in various shadow states
- $8D80-$8DFF: All 5 frame type names
- $9000-$97FF: Gus
- $9000-$966F: Hill zone
- $9000-$900F: Striped tile
- $9800-$9A3F: All tilemaps
- $9C00-$9C07: Frame type tilemap
Desired memory layout
- $8000-$866F: Hill zone
- $8780-$87EF: Name of (only) the current frame type
- $8800-$8FBF: Sprites in various shadow states
- $8FF0-$8FFF: Striped tile
- $9000-$97FF: Gus
- $9800-$9A3F: Tilemap (Hill zone)
- $9C00-$9C9F: Tilemap (Striped)
- $9DC0-$9FFF: Tilemap (Gus)
- Frame type drawn using sprites instead
from 240p-test-mini.
Huffman takes a lot longer to decompress than the codecs I had been using. Decompressing the font alone (two blocks totaling 936 bytes) takes 0x5A2FA = 369402 clocks of BGB's time base of 2.097 MHz (one unit per two dots), or 176 ms. This implies a rate of about 200 mcycles per byte or 5.3 kB/s. This can make it painful for the user to switch among test patterns using a lot of compressed data. And based on my calculations, explicit tree Huffman isn't appreciably faster than canonical (codes-per-length based) Huffman.
One way around it is to do what Super Mario World does: decompress most assets to otherwise unused WRAM while the game sits on the copyright page. Then compression remains as fast as it is now.
We also want to compress only the first part of each IU file (the CHR ROM). So the tools will need to make read all affected .chr.pb16
and .iu
files and separate them into CHR (to be compressed) and the remainder (to include literally). So we'll probably need to bring all non-menu assets that the Huffman coder touches into one Python program rather than relying on Make and its problems with parallelizing jobs that have multiple output files.
from 240p-test-mini.
Related Issues (20)
- NES Solid color screen: Add windowed version
- PAL NES Linearity Test large ellipse is slightly too wide HOT 1
- MDFourier standalone ROM
- Add support for Famicom Box HOT 1
- Famicom support HOT 2
- Put Donna in GBC Shadow sprite
- 160P test suite on Super card SD HOT 1
- NES2.0 headered version
- Mode text rendered incorrectly in the GBC port HOT 1
- Add NES controller test HOT 1
- Audio for NES controller test
- Display Git tag and commit ID
- Zipfile build displays a blank version number
- NES2.0 headered version issue
- Famiclone glitchs HOT 1
- Add PAL phase test to NES Suite
- replace Linearity and Grid with Monoscope in GBA Suite
- Consider migrating GBA build to a toolchain distribution other than devkitARM HOT 1
- Eschew libgba; embrace libtonc
- Automate Wonderful build for GitHub Actions
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from 240p-test-mini.