’Cause all games were better on the GBC

You are not logged in.

#1 2017-05-25 14:28:27

Registered: 2016-05-07
Post 81/93


With my crystal hack nearing completion, I would like to play it using my Gameboy Player on the GCN. However, I understand that the Everdrive GB does not support RTC usage. Is there a way around this?

I suppose the best way would be to either set the clock upon startup every time, or to have an in game clock instead. Both are fine, yet not sure how I would go about doing either?

Any suggestions from anyone that has done this themselves would be great.


#2 2017-05-25 15:15:34

Registered: 2016-05-09
Post 685/984

Re: RTC for ED-GB

GitHub user Kroc contributed this no-RTC code to Polished Crystal. The in-game clock advances six seconds for every real-world second, so a day lasts four hours.  There's a slight issue where the time overflows into some other data storage, but it would take years of play time to trigger, and if you check back on that issue then Kroc or I will fix it eventually.

Also, if you don't need the RTC, you can switch to MBC5 instead of MBC3. It just requires editing the Makefile (and renaming "MBC3" variables to "MBC5" for the sake of accuracy), but it'll let you build a 4MB ROM instead of 2MB. As you can see in that linked Timeless Crystal project, you'd be able to expand the PC boxes, and you'd never have to worry about running out of map or script space. (I'm at the point with Polished Crystal where I keep having to move and trim things so it'll all fit in 2MB.)

Last edited by Rangi (2017-05-25 15:21:10)


#3 2017-05-25 15:48:06

The Most Curious Thing
From: New England
Registered: 2017-05-03
Post 19/25

Re: RTC for ED-GB

Timeless Crystal is currently an undocumented mess, but I think it's bug-free at the moment and you can dig through the commits to get some ideas.

The gist of it:
- Replace the RTC with a "world clock" measured in ticks. A tick is 1/16 of a frame.
- Every frame, advance the world clock by up to 57,600 ticks (3600x real-time, or one world-minute per frame). This value is stored in WorldSpeed.
- WorldSpeed can be changed directly, or via map header (so that the speed changes upon entering a new map).
- I currently have a macro set map speed by map permission. INDOOR/GATE runs at 6x, CAVE/DUNGEON runs at 15x, TOWN runs at 30x, and ROUTE runs at 60x.
- The macros advance_clock_by and advance_clock_to change the world clock directly, advancing *by* so many units of time, or *to* the next occurrence of a time.
- The clock can also be paused and unpaused (during battle, while saving, while on the main menu, etc.)

Last edited by The Most Curious Thing (2017-05-25 16:00:13)

Timeless Crystal ✿ (๑◔‿◔๑)


#4 2017-05-26 07:33:14

Registered: 2016-05-07
Post 82/93

Re: RTC for ED-GB

OK, that sounds cool. Presumably there wouldn´t be any issue if I made this tweak in the disassembly and then just copied the hex differences to my code? I´m not using the disassembly for my hack so any changes would have to be hex based.

Thanks for your help!

EDIT: actually no worries. It´s sorted. Didn´t realise it would be so easy!

Last edited by Adam (2017-05-26 07:47:26)


Board footer

Powered by FluxBB