- Readme note about SRAM bank changes
- Adjustable duration and intensity (with display)
- VBL handler to update outside of main loop
- Cancel option
- Specific duty cycles based on cart testing (shorter cycle times to make it less lumpy, tuned intensity levels)
- remove misplaced commas and excessive line breaks
- remove trailing spaces at ends of lines
- remove trailing extra line break at end of array
- update tests
- First will be object files with only non-banked data (`size Descending`)
- Second will be fixed bank (`bank num Ascending, size Descending`)
- Third will auto-banked (`size Descending`)
This might be used with fixed-bank, size-padded object files and the .bndry directive for aligning.
The requirement would be that all files placed in a bank before a file using the .bndry directive have their size padded to the appropriate amount
* NES: Add support for various tilemap layout (mirroring) configurations
- Introduce platform configuration, mainly to define tilemap layout NES_TILEMAP_[F|H|V|S] in platform_cfg.s
+ Add NES_TILEMAP_S|H|V|F setting for tilemap layout, and hard-code to NES_TILEMAP_S for now
+ Add NES_LOMEM setting to enable current default of using part of stack instead of BSS for attribute shadow buffer
+ Edit Makefile to copy platform_cfg.s (if it exists) to platform directory after build
- Updates to attribute shadow buffer and dirty bits:
+ Add NUM_NT define for number of nametables used by a layout, and AT_SHADOW_WIDTH/_HEIGHT to denote the variable dimensions
+ Add convenience defines NT_2W / NT_2H to quickly test whether tilemap layout is two screens wide / high
+ Define _attribute_shadow and _attribute_row/_column_dirty in terms of NUM_NT
+ Update flush_attributes to support all layouts
+ Update get_bkg_xy_addr / set_bkg_tile_xy to support all layouts
+ Update set_bkg_attribute_xy[_nes16x16] to support all layouts
+ Update set_bkg_attributes[_nes16x16] to support all layouts, and correctly wrap to next AT in both directions
+ Update set_bkg_submap_attributes[_nes16x16] to support all layouts
+ Update set_bkg_submap to support all layouts, and contain common inner subroutine .set_bkg_common
+ Replace set_bkg_tiles with simpler implementation calling .set_bkg_common, and correctly wraps to next NT in both directions
+ Add set_bkg_based_tiles / set_bkg_based_submap implementations using the new common subroutine
- Updates to C include files:
+ Define DEVICE_SCREEN_BUFFER_WIDTH/_HEIGHT based on NES_TILEMAP_ setting, doubling high-level size of WIDTH / HEIGHT conditionally
+ Add typedefs scroll_x_t / scroll_y_t as uint8_t or uint16_t based on NES_TILEMAP_ setting
+ Make move_bkg use scroll_x/y_t typedefs, set 9th scroll bit in shadow_PPUCTRL where needed, and compensate for 239->0 y wrapping
- Updates to examples:
+ Update large_map example to use platform-agnostic settings for scroll wrapping and offset
+ Update rle_map to use a uint16_t for scroll position, to support NES_TILEMAP_H and NES_TILEMAP_F settings