Add revision 10 changes (#722)

* revision 10 changes

* add rev10 to github actions

* add no-intro entry for leafgreen rev10
This commit is contained in:
Rairii
2026-03-21 21:12:48 +00:00
committed by GitHub
parent 0a86141109
commit 8f00ac8fe6
58 changed files with 3103 additions and 79 deletions
+12
View File
@@ -23,8 +23,13 @@
#define PCSWITCH_FORCE_SP_START 0x09
// Period for which parent-child switching search specified
#if REVISION >= 0xA
#define PCSWITCH_ALL_PERIOD 180 // Entire cycle 180 frames
#define PCSWITCH_SP_PERIOD 65 // Child period 40 frames
#else
#define PCSWITCH_ALL_PERIOD 180 // Entire cycle 180 frames
#define PCSWITCH_SP_PERIOD 40 // Child period 40 frames
#endif
// Error code returned by Link Manager API (rfu_LMAN_...return value of function)
#define LMAN_ERROR_MANAGER_BUSY 1 // Link Manager is already running.
@@ -165,6 +170,9 @@ typedef struct linkManagerTag
/* 0x014 */ u16 param[2];
/* 0x018 */ u16 NI_failCounter_limit;
/* 0x01a */ u16 connect_period;
#if REVISION >= 0xA
/* 0x01c */ u16 connect_period_initial; // pushes next offsets up by 2
#endif
/* 0x01c */ u16 pcswitch_period_bak;
/* 0x01e */ u16 work;
/* 0x020 */ u16 *acceptable_serialNo_list;
@@ -190,6 +198,10 @@ u8 rfu_LMAN_setLinkRecovery(u8 enable_flag, u16 recovery_period);
void rfu_LMAN_manager_entity(u32 rand);
void rfu_LMAN_syncVBlank(void);
u8 rfu_LMAN_initializeManager(void (*LMAN_callback_p)(u8, u8), void (*MSC_callback_p)(u16));
#if REVISION >= 0xA
void rfu_LMAN_forceChangeSP(bool8 child);
#else
void rfu_LMAN_forceChangeSP(void);
#endif
#endif //GUARD_LINKMANAGER_H
+7 -2
View File
@@ -8,12 +8,17 @@
// still has them in the ROM. This is because the developers forgot
// to define NDEBUG before release, however this has been changed as
// Ruby's actual debug build does not use the AGBPrint features.
// #define NDEBUG
// Revision 10 disabled asserts in some other way, comment out NDEBUG there to bring them back.
#if REVISION >= 0xA
#define NDEBUG
#endif
// Fire Red likely forgot to define NDEBUG/NOAGBPRN before release, leading
// to the inclusion of asserts in the retail ROM.
// Revision 10 disabled asserts in some other way, but isagbprint/etc is still present there.
#ifndef NDEBUG
#if !defined(NDEBUG) || REVISION >= 0xA
#define PRETTY_PRINT_OFF (0)
#define PRETTY_PRINT_MINI_PRINTF (1)
#define PRETTY_PRINT_LIBC (2)
+4 -3
View File
@@ -7,9 +7,10 @@
// exceed RFU_CHILD_MAX (4), for a total of 5 including the player.
#define MAX_UNION_ROOM_LEADERS 8
#define UNION_ROOM_SPAWN_NONE 0
#define UNION_ROOM_SPAWN_IN 1
#define UNION_ROOM_SPAWN_OUT 2
#define UNION_ROOM_SPAWN_NONE 0
#define UNION_ROOM_SPAWN_IN 1
#define UNION_ROOM_SPAWN_OUT 2
#define UNION_ROOM_SPAWN_OUT_SOON 3 // Equivalent to SPAWN_OUT in revision 10 - probably SPAWN_OUT means disconnected in a "connection reset" way?
#define UNION_ROOM_MAX_LEVEL 30
+1 -1
View File
@@ -9,7 +9,7 @@
#define MGBA_LOG_INFO (3)
#define MGBA_LOG_DEBUG (4)
#ifdef NDEBUG
#if defined(NDEBUG) && !(REVISION >= 0xA)
#define DebugPrintf(pBuf, ...)
#define DebugPrintfLevel(level, pBuf, ...)
#define MgbaOpen()
+4
View File
@@ -4,7 +4,11 @@
#include "global.h"
#include "main.h"
#if REVISION >= 0xA
#define LIBRFU_VERSION 1028
#else
#define LIBRFU_VERSION 1024
#endif
/* TODOs:
* - documentation
+12
View File
@@ -294,6 +294,7 @@ bool32 WaitRfuState(bool32 force);
bool32 HasTrainerLeftPartnersList(u16 trainerId, const u8 *trainerName);
void SendRfuStatusToPartner(u8 status, u16 trainerId, const u8 *name);
u32 WaitSendRfuStatusToPartner(u16 trainerId, const u8 *name);
s32 GetJoinGroupStatus(void);
void SetHostRfuGameData(u8 activity, u32 partnerInfo, bool32 startedActivity);
void InitializeRfuLinkManager_LinkLeader(u32 availSlots);
void RequestDisconnectSlotByTrainerNameAndId(const u8 *trainerName, u16 trainerId);
@@ -322,6 +323,17 @@ void RfuSetNormalDisconnectMode(void);
void SetUnionRoomChatPlayerData(u32 numPlayers);
void ClearRecvCommands(void);
void PkmnStrToASCII(u8 *dest, const u8 *src);
void ASCIIToPkmnStr(u8 *dest, const u8 *src);
#if REVISION >= 0xA
u16 RfuGetErrorInfo(void);
void LinkRfu_ForceChangeSpParent(void);
void DestroyTask_RfuReconnectWithParent(void);
void RfuReloadSave(void);
void RfuSoftReset(void);
#endif
#include "mystery_gift_server.h"
extern const struct MysteryGiftServerCmd gServerScript_ClientCanceledCard[];
+4
View File
@@ -180,6 +180,10 @@ void UpdateEscapeWarp(s16 x, s16 y);
bool8 SetDiveWarpEmerge(u16 x, u16 y);
bool8 SetDiveWarpDive(u16 x, u16 y);
#if REVISION >= 0xA
void ClearFieldCallback(void);
#endif
extern u16 *gBGTilemapBuffers1;
extern u16 *gBGTilemapBuffers2;
extern u16 *gBGTilemapBuffers3;
+36
View File
@@ -0,0 +1,36 @@
#ifndef GUARD_SLOOPSVC_H
#define GUARD_SLOOPSVC_H
#if REVISION >= 0xA
#define SVC4B_EXIT_EARLY (1 << 0)
#define SVC4B_RESEED_RNG (1 << 1)
void svc_40(void);
void svc_41(void);
void svc_47(void);
void svc_42(void);
u32 svc_49(void);
void svc_45_rfu_link_status(void);
u32 svc_4a(void);
void svc_43(u16 pid);
void svc_44(void);
u32 svc_53(void);
u32 svc_51(void);
u32 svc_4b(void);
void svc_WriteSector(u8 sector, u8* data);
void svc_ReplaceSector(u8 sector, u8* data);
void svc_FinishSave(void);
u32 svc_CommsAllowedByParentalControls(void);
u32 svc_BadWordCheck(u8* str);
void svc_4f(u32 arg);
u32 svc_50(void);
void svc_SetSaveBlock2(struct SaveBlock2* saveBlock2);
void svc_stubbed(void);
void svc_SetStarter(u32 species);
void svc_SetActivity(u32 activity);
void svc_IncrementLinkError(void);
#endif
#endif