Forums

Sega Master System / Mark III / Game Gear
SG-1000 / SC-3000 / SF-7000 / OMV
Home - Forums - Games - Scans - Maps - Cheats - Credits
Music - Videos - Development - Hacks - Translations - Homebrew

View topic - GBDK-2020 gets support for SMS/GG targets

Reply to topic
Author Message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
GBDK-2020 gets support for SMS/GG targets
Post Posted: Tue Aug 24, 2021 9:29 pm
Hi!

I'm working on adding support for SMS and GG targets to GBDK-2020.

Develop branch already contains crt, some minimal library (including console output) and toolchain, that supports compiling for SMS and GG, and also there are few cross-platform SMS/GG/GB examples.

We also have GBDK-2020 support discord server, here is the invite link.

I'm also looking forward for your suggestions and help.

https://discord.gg/pg7YhK36
  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Mon Aug 30, 2021 11:34 am
i have some progress with the library and cross-platform examples.

unfortunately, i don't have real hardware, can anyone check these roms for me? looking forward for your help
sms.zip (5.57 KB)
master system GBDK-2020 examples
gg.zip (13.61 KB)
game gear GBDK-2020 examples

  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Mon Aug 30, 2021 11:36 am
source code of those examples can be found in the public GBDK-2020 github repository. unfortunately, forum does not allow me to post links yet.

https://github.com/gbdk-2020/gbdk-2020/tree/develop/gbdk-lib/examples/cross-plat...
  View user's profile Send private message
  • Site Admin
  • Joined: 08 Jul 2001
  • Posts: 8644
  • Location: Paris, France
Reply with quote
Post Posted: Mon Aug 30, 2021 1:52 pm
(edited in your link, from next post you should be able to post links)
  View user's profile Send private message Visit poster's website
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Mon Aug 30, 2021 2:54 pm
thank you
  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Thu Sep 02, 2021 3:30 pm
Most recent binary builds for Windows, Linux and MacOS can be found here: https://github.com/gbdk-2020/gbdk-2020/actions under "GBDK Build and Package"
  View user's profile Send private message
  • Joined: 29 Mar 2012
  • Posts: 879
  • Location: Spain
Reply with quote
Post Posted: Fri Sep 03, 2021 6:48 am
Thanks Toxa!
  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Sat Sep 04, 2021 3:00 pm
funny multi-threaded "game" example: https://github.com/untoxa/a_kanoid
  View user's profile Send private message
Revo
  • Guest
Reply with quote
Post Posted: Sun Sep 05, 2021 11:08 am
Amazing project!

I tried metasprites.sms and scroller.sms (the version posted here) and a_kanoid.sms (the version posted on discord) on real hardware (SMS1 FR Hang On with everdrive).

metasprites.sms : perfect !

scroller.sms : scrolling text doesn't display at all, only text corner up left.

a_kanoid.sms: seems like you're not cleaning the VRAM correctly, so lot of garbage depending of what was displayed before booting the game. To see what I'm talking about, fix the header/checksum for SMS, use Emulicous with a real BIOS (I personally use Hang On one).
 
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Sun Sep 05, 2021 7:42 pm
Revo wrote
a_kanoid.sms: seems like you're not cleaning the VRAM correctly, so lot of garbage depending of what was displayed before booting the game.

fixed: https://github.com/gbdk-2020/gbdk-2020/commit/bbfde1a7cd6eb70e978b9f7bb4f1f379a8...
  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Sun Sep 05, 2021 7:49 pm
Revo wrote
fix the header/checksum for SMS

SMS header fix: https://github.com/gbdk-2020/gbdk-2020/commit/ed2f5698c12b8e61bf224db6284a5df54a...
  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Mon Sep 06, 2021 3:37 pm
Last edited by toxa on Fri Sep 10, 2021 9:30 pm; edited 1 time in total
as a proof-of-concept, i ported my "color lines" game boy remake to the game gear.

ps: original game boy version is here: https://untoxa.itch.io/color-lines
colorlines.png (9.17 KB)
screenshot
colorlines.png
colorlines-GG.zip (9.04 KB)
color lines GG
colorlines-SMS.zip (8.97 KB)
color lines SMS

  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Thu Sep 09, 2021 10:07 pm
I ported "Black Castle", homebrew game by 0x7f. It works fine on GG, but even better on SMS because of scroll inhibit of the HUD.

Sources and rom can be found here: https://github.com/untoxa/BlackCastle

No sound and music yet. Also missing flipped sprites. Work in progress.
blackcastle.jpg (42.84 KB)
blackcastle.jpg

  View user's profile Send private message
  • Joined: 17 Feb 2020
  • Posts: 668
  • Location: United States
Reply with quote
Post Posted: Sat Sep 11, 2021 11:48 pm
toxa wrote
as a proof-of-concept, i ported my "color lines" game boy remake to the game gear.

ps: original game boy version is here: https://untoxa.itch.io/color-lines

Goddamn, the music in the Game Boy version is literally lit.
  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Fri Sep 24, 2021 9:16 pm
GBDK-2020 v.4.0.5 with cross-platform support was released: https://github.com/gbdk-2020/gbdk-2020/releases/tag/4.0.5

Release notes:

gbdk-4.0.5
    - Support for Sega Master Sysyem/Sega Game Gear
        - z80 library which provide compatibility layer as well as platform-specific functions
        - support for the new targets on the toolchain side
        - cross-platform examples (gnu make is required)
    - Library fixes/improvements
        - low level register/constant definitions for all targets
        - DEVICE_* constants
        - BANK* macros
        - some headers were moved from gb/* into gbdk/*
            - bcd.h, console.h, far_ptr.h, font.h, gbdecompress.h, metasprites.h
        - new headers:
            - gbdk/platform.h: includes specific platform headers depending on the target
            - gbdk/incbin.h: INCBIN* macros for including of raw binary data
            - gbdk/rledecompress.h: RLE decompression functions
        - itoa()/uitoa()/ltoa()/ultoa() require radix parameter (GB target ignores it and assumes radix is 10)
        - fixed get_bkg_tile_xy()
        - other minor fixes/enhancements
    - Toolchain
        - lcc
            - ability to pass target port/platform
            - support for linker files
        - bankpack
            - support for linker files
            - support for SMS/GG specifics
        - png2mtspr was renamed to png2asset
            - tilemaps/tiledata export without metasprite descriptors
            - CGB support
        - support for RLE compression in gbcompress
    - New examples
        - cross-platform examples
        - INCBIN example
        - on-the-fly RLE data decompression example
    - Updated documentation   
[/code]
  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Mon Sep 27, 2021 9:12 pm
Simple variable width font engine: https://github.com/untoxa/VWF
VWF.png (17.63 KB)
GG screenshot
VWF.png

  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Fri Oct 15, 2021 2:13 pm
Petris: new GameGear game by @bbbbbr: https://bbbbbr.itch.io/petris
petris.png (8.8 KB)
petris.png

  View user's profile Send private message
  • Joined: 05 Jun 2010
  • Posts: 757
  • Location: Pennsylvania, USA
Reply with quote
Post Posted: Fri Oct 15, 2021 4:20 pm
Awesome work, thanks!
  View user's profile Send private message Visit poster's website
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Thu Oct 28, 2021 9:56 am
cross-platform preemptive multi-tasking library: https://github.com/untoxa/gameboy_preemptive_multitasking
screenshot.png (8.72 KB)
screenshot.png

  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Wed Nov 17, 2021 9:26 am
cross-platform "GBVM" virtual machine implementation which happens to be the base of the GBStudio core: https://github.com/untoxa/gbvm/
example.png (8.39 KB)
example.png
scheme.png (759.12 KB)
scheme.png

  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Fri May 20, 2022 12:51 pm
made a sort of cross-platform "warcraft" prototype. select the actors and point their destination, they all may walk by their individual path at once.
quest.png (9.83 KB)
quest.png
quest.zip (14.13 KB)

  View user's profile Send private message
  • Joined: 29 Mar 2012
  • Posts: 879
  • Location: Spain
Reply with quote
Post Posted: Sat May 21, 2022 1:17 pm
It looks really nice!
  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Thu Jul 13, 2023 4:08 pm
stackful coroutine support for SDCC: https://github.com/untoxa/sdcc_coroutines
screenshot.png (7.86 KB)
screenshot
screenshot.png

  View user's profile Send private message
  • Joined: 09 Aug 2021
  • Posts: 106
Reply with quote
Post Posted: Wed Aug 09, 2023 9:00 pm
gbdk-4.2.0

https://github.com/gbdk-2020/gbdk-2020/releases/tag/4.2.0

Highlights
- NES support for much of the GBDK API (a big undertaking by @michel-iwaniec)
- Updated compiler to SDCC 4.3 with up to 10% performance/size gains and many fixes
- Game Boy Color Hi-Color conversion utility and display example

Changes
- Library improvements
- Added `set_bkg_attributes()`, `set_bkg_submap_attributes()`, `set_bkg_attribute_xy()`
- Some functions renamed (old names will work for now)
- `vsync()` replaces `wait_vbl_done()`
- `set_default_palette()` replaces `cgb_compatibility()`
- `move_metasprite_flipx/y/xy()` replace `move_metasprite_h/v/hvflip()`, `move_metasprite_ex()` replaces `move_metasprite()`
- metasprites: added metasprite functions which can set base sprite property
NES
- NES support for much of the GBDK API + banking in the library and toolchain (a big undertaking by @michel-iwaniec)
- Added `set_bkg_attributes_nes16x16()`, `set_bkg_submap_attributes_nes16x16()`, `set_bkg_attribute_xy_nes16x16()`
SMS/GG
- Swapped A and B buttons to match game boy, X coordinate metasprite clipping on the screen edges
Game Boy
- Faster `vmemcpy()`, `set_data()`, `get_data()`, Fixed `hide_sprites_range(39u, 40u)` overflow shadow OAM
- Refactored interrupts to use less space
- `lcc`minor fixes
- `png2asset`: several fixes and a couple new features for palettes
- Added `png2hicolorgb` + example project
- Examples
- Improved wav support on AGB/AGS hardware, Added color for Large Map Example, Added GB-Type example
- Updated documentation and improved search
  View user's profile Send private message
Reply to topic



Back to the top of this page

Back to SMS Power!