@sp193: Relating this post
Ooops, I forgot to reply here... Sorry!
~
It entirely depends on the kind of OSDSYS-Hack!
A function based on source (and doesn't need to be a 'visible' hack), usually is not so hard to make it compatible along different BOOT-ROM-Versions.
The biggest issue I see is, when someone tries to implement on of those more sophisticated manual OSDSYS-Hacks (mostly those which can be seen).
- As for %VER%... Well, I don't know if it is a global constant or variable, or if it is locally within the CNF-Parser... (with an exception trigger, if the CNF Parser reads '%VER%). Obviously this function (the version-submenu-hack) would not need to 'get in contact'/use the CNF-Parser... (but it still could get it from there, possibly)
Well, it definitely can get quite annoying, even for the
supposedly 'small' features/additions. :-|
The addition of the POWEROFF-Call is a perfect example of this, just like %VER%!
It's technically not a real 'OSDSYS-Hack', because it doesn't patch the OSDSYS manually/directly. It doesn't add a new button or so... You know what I mean!
But it still adds a function to both 'stages' of user-interaction (Logo/Button-Launch and 'hacked OSDSYS') via a (I like to refer to it as) 'call' (i.e.: FASTBOOT, OSDSYS, OSDMENU, POWEROFF...)!
So that is a
perfect example of a 'kind of' OSDSYS-Hack, which doesn't involve really patching the OSDSYS 'technically'!
The function-enhancements of these kinds have some benefits!
- They are usually compatible to all BOOT-ROM-Versions, because they already have full control about the Hardware once they are started... (i.e. like an ELF). The code which is started, however still musst be compatible with the hardware or the software it is interacting with.
- There is no need to track down the location of functions which are intended to be patched!
- No need to apply/know MIPS ASM to get them done, which makes it
- less likely for bugs to occur, based on faulty Opcodes!
But they are limited in regards, what could be done for with OSDSYS-patching (like the scrolling)!
In %VER%'s case, it probably replaces the %VER%-'Variable' (if it parses it from the config) with the version-number... So I suppose it is some code in the CNF-Parser?!
Only
@sp193 could tell, because these sources are not open, but based on the old sources, that's a logical way IMO.
The 'more sophisticated OSDSYS-Hacks' I was referring to here (in the following quote), sadly are prone to cause issues like crashes or other things + the multiple BOOT-ROM-Versions sometimes need other values to search for, or other locations to patch, etc...
If it is the secondary and you are referring to the 'patterns' FMCB looks up and patches, yes indeed!
But they can be 'traced' (even via PS2Dis and I think IDA can be used for it as well)!
~
If I remember correctly, ffgriever dumped some cdvd-related RAM-Portions (CDVD-Registers?) and re-implemented it back manually. This in the beginning caused some troubles with various models, because some were using other 'patterns'/instructions/orders.
Regarding this:
Ooooh! The cause of this (probably) is the pointer-array overflowing. The function for this is... (I will edit the post later and add the name.)
The function could be moved to another memory-location and 1Item uses 17Byte (atleast in 1.8), if I remember correctly.
I will look up the function and post it tomorrow. I've got a lot to do for the next 9 hours...
...and...
I think I found it!
It's probably the struct 'osdsys_settings', which is overflowing into another region, once it grows too big (thus not allowing 256 or more items)... --> typedef struct {~} osdsys_settings;
Changing it's Memorylocation would 'fix' that '(non-)issue', I suppose!
I will add the OSD Hack-related functions I meant and which can be reused in a similar way to rebuild another 'sub-menu', once I find it.
I've got to take a nap. It's past 3AM here...
Have you tried moving the 'struct' (typedef struct {~} osdsys_settings; ) to another memory-location with a bit more space?
I think that would be sufficient, if '256' or '300' App-Links would be needed!
I love the POWEROFF-Call, really!
It is just
perfect, because FMCB is so closely 'tied' to the PS2-System and -menu related stuff!
Btw.: I would still like to see atleast 'Shutdown System' in the OSDSYS being red, but it is your choice if the 'base/basic/core-install-package' will use it.
