113 Commits

Author SHA1 Message Date
bbbbbr
c029c46e4c Docs: update doxygen version to 4.5.0 2025-12-06 02:20:06 -08:00
bbbbbr
65f033ac5e Examples: fix some missing compile.bat
- Add missing target to some makefiles
- Fix megaduck and cross-platform folders not in list of folders to process
2025-11-26 23:33:38 -08:00
bbbbbr
50e4bacf48 Docs: allow explicit path to doxygen command
- Change min ver to 1.9.2
2025-11-25 03:03:16 -08:00
Michel Iwaniec
62de8abb87 NES: Add support for various tilemap layout (mirroring) configurations (#783)
* 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
2025-05-19 12:44:45 +01:00
bbbbbr
d83ba2aff5 Build: Update gbdk version to 4.4.0 2025-04-21 03:05:02 -07:00
bbbbbr
0e21c3f573 Build: Remove creation of empty crt0.lst files in build output
- Works around issue where the sdld linker tries to create matching .rst files in the gbdk install dir where it finds the empty crt0.lst, causing builds to fail if the user lacks permissions for that directory
2025-04-05 03:53:24 -07:00
Michel Iwaniec
4a714bec8c NES: Move .nes header functionality out of makebin (#750)
NES: Move .nes header functionality out of makebin

- Move all .nes header related functionality into a new utility gbdk-support/makenes

- Update LCC to use makenes for .postproc member of build process, with mapper30 header parameters hard-coded for now

- Update makefiles to build makenes

- Add Makefile commands to generate output for the toolchain settings doc page

- Add documentation section for makenes in 06_toolchain.md
2025-03-21 00:00:13 +00:00
bbbbbr
e26b3b37d6 Build: Update gbdk version to 4.3.0 2024-05-05 23:47:15 -07:00
bbbbbr
c5ffc33c14 tools: add romusage 2024-01-02 03:19:57 -08:00
bbbbbr
2defbebd46 Add hi-color conversion utility and example 2023-08-07 11:19:21 -07:00
bbbbbr
4e72206dba Build: don't echo cc1 copy to build command 2023-06-28 14:31:41 -07:00
bbbbbr
868f0635d4 Build: win32-win64 SDCC DLL copy 2023-06-15 11:30:12 -07:00
bbbbbr
d99014132b Build: Update gbdk version to 4.2.0 2023-06-05 00:21:26 -07:00
bbbbbr
e1a0b4da6a Docs: toolchain settings: SDCC 4.3 + NES updates
- Add sdas6500, sdld6808
- Regenerate output
2023-06-04 16:05:49 -07:00
bbbbbr
abd30289c1 Build: Root Makefile: NES add sdld6808 to bin copy list 2023-06-02 10:58:23 -07:00
bbbbbr
ecf390fadf Build: update for SDCC 4.3, copy libexec dir with cc1 binary to build output 2023-06-02 01:33:21 -07:00
bbbbbr
836a1745d9 Build: copy libgcc_s_dw2-1.dll for windows 32 bit
Also fix name in gbdk makebin Makefile
2023-06-01 02:16:42 -07:00
bbbbbr
2ff9dbdd0b Build: Add gbdk makebin fork to gbdk-support-clean target 2023-06-01 01:57:38 -07:00
charitybell
6cbdfb2a20 Fix gbdk-lib-install-ports target dependencies
The gbdk-lib-install-ports has an unwritten dependency on the
gbdk-lib-build target. the gbdk-lib-install-ports target fails if built
before the gbdk-lib-build target. In a non-parallelized build, these two
targets are built in the right order and the build works fine. In a
parallelized build, a race condition causes the targets to build in the
wrong order.
2023-03-25 20:21:52 -07:00
bbbbbr
135543926d Docs: patch in an improved doxygen substring search
- Does full substring match instead of only matching items with same starting sequence
- Unclear how compatible this will be across doxygen versions
2023-02-27 01:35:48 -08:00
Toxa
85deced26a don't try to copy the new cc1 preprocessor 2023-02-09 00:23:32 +03:00
Toxa
580366f09a copy the new "cc1" preprocessor into the bin folder, if present 2023-02-06 01:25:10 +03:00
bbbbbr
54e6f26b81 Docs: add asmlink manual 2022-11-05 23:47:14 -08:00
bbbbbr
f9866465c8 Version & doc updates for 4.1.1 service release 2022-11-04 20:38:55 -07:00
bbbbbr
589d04d05a Docs: Doxygen path config from makefile 2022-10-28 00:54:59 -07:00
bbbbbr
d3dc613c52 License: Fix Windows path name clash between LICENSE file and license directory 2022-08-31 20:27:36 -07:00
bbbbbr
e51f54de21 Docs: 4.1.0 Misc Updates 2022-08-14 23:15:02 -07:00
bbbbbr
dd3f4eb718 License: Summarize licenses, update to GPLv2+LE for Lib
- Add license folder
- Copy license folder to build output when building
- Summarize all licenses used in the repo
- Add more explicit license files where needed
- Update contact info for Jon Fuge
2022-07-27 22:59:44 -07:00
bbbbbr
213b292f29 Makefile: Update global version to 4.1.0 (affects docs) 2022-06-12 00:47:35 -07:00
Toxa
094cffa119 DOCS: include SDCC manual in pdf format 2022-06-09 19:55:46 +03:00
Toxa
bd0581f3e8 ALL TARGETS: remove legacy support for library models (never worked), remove legacy support for multiple assemblers (never worked) 2022-06-09 18:31:58 +03:00
Toxa
5bf5489a03 Merge pull request #365 from gbdk-2020/develop
merge with develop
2022-06-09 18:03:51 +03:00
MichelIwaniec
6555a19987 Fix makebin build bug causing internal fork to get overwritten
* Remove makebin from list of SDCC binaries to copy in sdcc-install build step
2022-06-09 14:19:21 +01:00
Toxa
9c420b4e62 MAKECOM: add make clean from makecom utility, remove the old pascal implementation 2022-06-09 11:48:10 +03:00
Toxa
019a4f7c6d Merge branch 'NES' into nes_smoketest 2022-06-08 23:26:32 +03:00
MichelIwaniec
c0a97c9fd7 Prepare for makebin changes by upgrading its gbdk fork to sdcc's newest version:
* Replace gbdk-support/makebin/makebin.c with sdcc-svn/sdcc/support/makebin/makebin.c@r12975
* Edit Makefile to build this makebin, and install it instead of the one in the patched sdcc build
2022-06-08 19:29:31 +01:00
MichelIwaniec
694da68aed Add nes.lib for GBDK installation
* Add crt0 for NES with NMI handler performing OAM DMA, palette update and VRAM transfers via a transfer buffer at bottom of stack
* Add trivial definition of crlf in crlf.c
* Add "nes" to PLATFORMS in top-level Makefile and gbdk-lib/libc/Makefile
* Add gbdk-lib/include/nes/hardware.h and gbdk-lib/include/nes/nes.h, with hardware registers and platform function prototypes
* Update gbdk-lib/include/gbdk/platform.h to include nes/nes.h
* Update Makefiles to build nes.lib
2022-06-08 18:42:10 +01:00
Michel Iwaniec
d4ba777904 Add mos6502.lib build for GBDK installation (#1)
* Add assembly support routines from sdcc-svn/sdcc/device/lib/mos6502/ to gbdk-lib/libc/asm/mos6502/
* Add gbdk-lib/libc/asm/mos6502/Makefile, based on corresponding sm83 / z80 Makefiles
* Add CPU-specific include files to gbdk-lib/include/asm/mos6502/, based on corresponding sm83 / z80 include files
* Update gbdk-lib/include/asm/sm83/types.h and gbdk-lib/include/asm/z80.types.h to define REENTRANT as no-op
* Update gbdk-lib/include/stdio.h to use REENTRANT keyword for printf and sprintf
* Update gbdk-lib/include/stdlib.h to prevent #if-clause from redefining __reentrant as a no-op
* Update gbdk-lib/include/stdatomic.h to consider mos6502 in #if-clause
* Update gbdk-lib/libc/_divulong.c to consider mos6502 in #if-clause
* Add mos6502 to PORTS in Makefile, gbdk-lib/Makefile.common and gbdk-lib/libc/Makefile
* Update Makefile to include sdas6500 and sdld in sdcc-install rule
2022-06-07 13:50:43 +01:00
MichelIwaniec
983766b21c Add mos6502.lib build for GBDK installation
* Add assembly support routines from sdcc-svn/sdcc/device/lib/mos6502/ to gbdk-lib/libc/asm/mos6502/
* Add gbdk-lib/libc/asm/mos6502/Makefile, based on corresponding sm83 / z80 Makefiles
* Add CPU-specific include files to gbdk-lib/include/asm/mos6502/, based on corresponding sm83 / z80 include files
* Update gbdk-lib/include/asm/sm83/types.h and gbdk-lib/include/asm/z80.types.h to define REENTRANT as no-op
* Update gbdk-lib/include/stdio.h to use REENTRANT keyword for printf and sprintf
* Update gbdk-lib/include/stdlib.h to prevent #if-clause from redefining __reentrant as a no-op
* Update gbdk-lib/include/stdatomic.h to consider mos6502 in #if-clause
* Update gbdk-lib/libc/_divulong.c to consider mos6502 in #if-clause
* Add mos6502 to PORTS in Makefile, gbdk-lib/Makefile.common and gbdk-lib/libc/Makefile
* Update Makefile to include sdas6500 and sdld in sdcc-install rule
2022-06-06 00:38:21 +01:00
Toxa
24fc5273c0 suppress error when passing -u option into the linker 2022-06-04 23:57:12 +03:00
Toxa
3bdf668e22 migrate to SDCC 4.2 2022-04-01 18:45:25 +03:00
bbbbbr
378d03f293 Build system: makecom: remove incorrect auto-docs line 2022-03-14 01:55:01 -07:00
bbbbbr
7c33892c02 makecom: integrate with build system 2022-03-09 17:05:37 -08:00
Toxa
db22361187 initial MSX DOS support 2022-02-19 14:02:41 +03:00
bbbbbr
0648a6540b Additional check to set .exe extension for Win builds 2022-02-12 01:37:31 -08:00
bbbbbr
bfc0b7f25f Build: Main Maikefile: flag for cross building Win x32 or x64
- export OS_TARGET=Win_x32; make
- export OS_TARGET=Win_x64; make
- (use exiftool on linux to verify)
- Also fix strip executable extension during cross build
2022-02-12 00:50:55 -08:00
bbbbbr
9893f998ba Updates for 4.0.6
- Add version number to front of PDF and HTML docs(controlled my version in root makefile)
- Little improvements to memcmp() and strncmp()
2022-02-01 00:17:49 -08:00
bbbbbr
f26c7ce80b Docs: additional links to makebin MBC settings 2022-01-23 22:07:45 -08:00
Toxa
78e60ce3d2 megaduck support (library and definitions) 2021-10-15 15:19:01 +03:00
bbbbbr
6bb46a75fd Docs: toolchain updates for 4.0.5
- Update some notes about building without lcc and directly using the sdcc tools
- Add sdldz80 and sdasz80 to toolchain help output page (updated main makefile to generate it, plus updated output)
2021-09-19 00:35:06 -07:00