@All Lately want to play a bit with old stuff from the past on OS4 and find out that while we have a lot of things done we seem still not to have after those years a patch to redirect those CIA resources / Paula to AHi so games/demos which send data to Paula still didn't works?
But tried this one with Foundation game (which plays intro music (mod protreker files) over Paula only and in binary i can see ciaa.resource is used) and heard nothing. This is not surprising of course due to the fact that this hack was just proof-of-concept and seems to work on "per game hack bases".
@Raziel it's more for the fun of course. Just some kind of fetish :) I even can offer a bit of money if can write something basic.. 200-300$ for a start.
i can also go another route exactly for Foundation: disassemble it by ida and then remove paula player and replace it on ahi (ptplay.library one) for example but that will be just for one single game ..
not for amigas of course, but have gazillion plugins. So you can disassemble 68k AmigaOS hunk binaries, PPC ones, etc). kind of cross-platform disassembler.
Business edition even supports Altivec SPE Freescale etc. But for us, there is important only 68k/hunk support whiсh even home-edition support (and in end, there are torrents so no problems of course).
Then you change it as you wish and compile binary back but this time by amiga compilers of course.
The only problem that this all will be pure assemblers mess. Through IDA do very good job here but It still FAR from original code. So there will need to find where paula player used made a jump to a new code and wrote code to play things over ptplay.library instead.
Good news is that we can mix C and asm code. So steps are : find out where to make an external jump to functions of C compiled file and all can be done.
While in this particular case it should be doable even by me in other cases that much more harder.
For example when Alfkil do his patch for Napalm it was probably much harder as he code in asm etc. But will see.
It's high time OS4 had custom chip emulation baked in. 20 years ago it was acceptable to say 'we cannot produce new custom chips and they can't be emulated in software'. That's not true now. No (technical) reason one couldn't build something that worked like this: - Lock the address space where custom chips is expected to live on boot, don't allow anyone else to use that memory. We all have 2GB now, a few MB is easy sacrifice - Run emulator process that constantly refreshes state of 'classic Amiga' environment based on current state of virtual custom chips. - Write some intelligence that increases/decreases speed of refreshing that state based on rate of changes i.e. how many writes are going into that area of memory. - Provide some APIs that allow capture the bitplanes buffer and audio out, ideally already converted into some modern formats for piping elsewhere - On X5000 it could even be run on second core, giving it something to do without requiring full SMP support. - Alternatively have it done by some FPGA solution in sam460ex FPGA or X5000 'Xenu' chip or whatever it was called. Or on a Mister or Vampire on a plugin card
I know Kjetil is sort of trying to do this, as I think is Michal if he integrates custom chip emulation into Emu68.
(Footnote: Like CIAgent does, but for the whole chipset)
There is big different between having the source code, and having it explained in detail. Or trying to reverse engineer something. The Scoopex demo was designed to bang hardware with disregard for intuition, and it’s in the outer edge of what can be considered portable.
I have 5 projects dealing with classic software.
chipset.library
provides ciaa/ciab timing, and Paula emulation.
libBlitter.library
provides blitter in software
libCopper (currently linkable library)
provides a way to render the copperlist into a 32bit bitmap.
BestFakeMode (unstable experimental patch)
A project to replace, AmigaOS4, fakes modes, that does not scale resolutions, and lacks lot of modes. BestFakeMode however does scale screens, also forces on 68K programs to open planar modes, instead of chunky modes, if resolution is lowres/hires/dbpal/dbntsc/laced/laced+hires etc.. It does work with VistaPro. it also has extremely simple OS Copper list support.
(NutsAboutAmiga)
Basilisk II for AmigaOS4 AmigaInputAnywhere Excalibur and other tools and apps.
Recently I’m tilting more to portable API approach, instead of writing patches. provide a set of APIs that can be used, from assembler or C, that’s direction I’m going, I believe its most doable approach.
Patches has the nasty issue of messing with the system, or conflicting, and also if you forget to start the patch the system crashes. when you try to start the misbehaving program/game.
Quote:
as I think is Michal if he integrates custom chip emulation into Emu68.
I believe Emu68 is fast because does not need to do custom chip emulation, instead it can depend on Amiga (host hardware) to do it. there is a big overhead when it has to emulate things on read and write, this he can avoid. So, he can use 100% of the microcontroller CPU resources to emulate 680x0 instructions only. So that’s big different compared to how UAE works. He has also moved hardware address space into upper address space, allowing the Amiga System to access it.
its well-done hybrid system. Buts its wherry different from what I’m doing.
(NutsAboutAmiga)
Basilisk II for AmigaOS4 AmigaInputAnywhere Excalibur and other tools and apps.
i found it on your GitHub but is it in working shape already? i mean i may try to reassemble Foundation binary and then use your chipset.library. if it works at all :)
Quote:
BestFakeMode
That one sounds very interesting. Especially for old classic software which can't be managed by "screens", and which forced to be always 320x240 and for modern monitors of no go (which most can't do less than 640x480 anymore).
Especially interesting to have Scaling via compositing, so we can have 640x480 from 320x240 with almost no loose.
EDT: found that on your GitHub will give it a go-to check some stuff and report bugs if you are in interest to improve it further.
EDIT2: tried to compile BestFakeMode and while it compiles with some warnings it fails to link saying about undefs to the "ham6" and "ham8" from engine.c. Checked that file and they there just inlined. So remove inline and all links fine (seems newer compilers don't like inlines anymore).
EDIT:
Tried all demos you mention: Dkd-Chaotic, Dkd-swnf, dkd-jaeg. They all work without BestFakeMode so they are kind of system-friendly already: rtg/ahi/640x480/etc.
is there any demo/game which refuses to work on os4 at all (freezes crashes or black screen) but works with your path?
EDiT4:
Tried one of those demos with your patch just to see how it wors - it show me some wrong color images on the window and then so hardcore GR that i can't ignore it :)
Edited by kas1e on 2022/1/4 18:40:30 Edited by kas1e on 2022/1/4 18:46:00 Edited by kas1e on 2022/1/4 18:48:59 Edited by kas1e on 2022/1/4 18:50:44 Edited by kas1e on 2022/1/4 19:09:59 Edited by kas1e on 2022/1/4 19:13:46 Edited by kas1e on 2022/1/4 19:15:24
For BestFakeMode i thinks better some takes my ideas and improvement and make Native Fake Modes better instead of fixing "BetterFakeMode" patch, its too hacky, but fun experiment, but also shows anyone you don’t need access to the OS to experiment with improvements.
if AmigaOS4 emulated lowres correct modes it might have done it. at higher FPS then what has with fixed 640x480 modes.
Yes,I don't think the native fakes modes support ham.
(NutsAboutAmiga)
Basilisk II for AmigaOS4 AmigaInputAnywhere Excalibur and other tools and apps.
EDIT2: tried to compile BestFakeMode and while it compiles with some warnings it fails to link saying about undefs to the "ham6" and "ham8" from engine.c. Checked that file and they there just inlined. So remove inline and all links fine (seems newer compilers don't like inlines anymore).
New compilers like them even more than the old ones :) It's just that they need to reside in the same compilation unit unless you're using LTO. This has always been the case. That's why you often see inline functions in header files.