ADFFS will not work on the new version of the Pi due to it being ARMv7 only.
A lot of legacy C games rely on rotated loads, which are only available on ARMv5. ADFFS does in fact force the ARM into ARMv5 mode whilst the JIT is running to ensure compatibility.
It may be some time before I can add full support for ARMv7 as I may have to switch all LDR and STR instructions to be interpreted. This would obviously have quite a large performance impact as ADFFS currently copies LDR and STR instructions and leaves the CPU to run them natively.
EDIT: It's not as bad as I thought, I can switch ARMv7 to Abort on unaligned memory access meaning only the instructions that require it would be interpreted.
I'd also need to clear the lower two bits before setting PC to avoid Interworking issues. This just needs an extra instruction in a few codelets, so a minor issue.
Pi 2 support
Re: Pi 2 support
Silly question, but are the Beagle and panda systems also ARM v7? So the same applies to those? And iMX6?
I only ever used ADFFS on a Pi. I didn't realise that it would have issues on the other modern platforms.
I only ever used ADFFS on a Pi. I didn't realise that it would have issues on the other modern platforms.
Re: Pi 2 support
I've developed and tested it for the Archimedes, RiscPC, Iyonix and Pi and the aim of the project was to get games running on the Pi.richw wrote:Silly question, but are the Beagle and panda systems also ARM v7? So the same applies to those? And iMX6?
I only ever used ADFFS on a Pi. I didn't realise that it would have issues on the other modern platforms.
ADFFS as a floppy emulator should work on any ARM platform, it's games running under the JIT that may not work as it forces ARMv5 mode. If that register is ignored by the CPU it should run just fine in ARMv7 mode, although games that rely on unaligned memory access will fail. I've not actually tested in strict ARMv7 mode though.
I've not received any feedback to confirm either way about other ARMv6 / v6 platforms, so I can't be certain.
Re: Pi 2 support
Ah, that makes sense, thanks.
I guess the Pi support is what could help get JASPP to a wider market. Messing about with 25 year old machines isn't for everyone!
I guess the Pi support is what could help get JASPP to a wider market. Messing about with 25 year old machines isn't for everyone!
Re: Pi 2 support
I've now ordered a Pi 2 and will start work on support once the next ADFFS release is out. Although I could code Unaligned access on the Pi, there are some fundamental differences at cache level on the Pi 2 that need checking. The cache rework I've been doing this week should hopefully resolve it, but without testing on a physical machine its pure speculation.JonAbbott wrote:It's not as bad as I thought, I can switch ARMv7 to Abort on unaligned memory access meaning only the instructions that require it would be interpreted.
I'm not sure why I made that statement, all codelets clear bits 0-1 and 26-31 before they set the PC so Interworking shouldn't be an issue.JonAbbott wrote:I'd also need to clear the lower two bits before setting PC to avoid Interworking issues. This just needs an extra instruction in a few codelets, so a minor issue.
Re: Pi 2 support
Hi Jon, do you have any news on support for the Pi 2?
Re: Pi 2 support
I'm still considering the best way to implement it, although it's on the list for the next release.
Re: Pi 2 support
I've started the Pi 2 support. After a day of sorting out deprecated instructions within ADFFS itself, I do have it running and Conqueror running reliably.
Sadly that's where the good news stops, as many games exhibit screen corruption, even Zarch doesn't work for long before dying from memory corruption. It's fairly predictable, the first word of the GPU memory corrupts, then a few more on the first raster, followed by a random number of words across the screen and then a total lock.
I'm unsure at this stage if it's the GPU RAM that's corrupt, or DA2.
Sadly that's where the good news stops, as many games exhibit screen corruption, even Zarch doesn't work for long before dying from memory corruption. It's fairly predictable, the first word of the GPU memory corrupts, then a few more on the first raster, followed by a random number of words across the screen and then a total lock.
I'm unsure at this stage if it's the GPU RAM that's corrupt, or DA2.
Re: Pi 2 support
New build up on the dev site, fixed a bug that was causing Battle Tank and a few others to Abort during loading.
Now that it's working on the Iyonix, I can see there's a problem somewhere. Games that run under a high Hz base mode are running very slowly, Fire & Ice for example runs at half speed as does the music. It's not the blitter at fault, as Zarch runs at over 50fps but it is somehow related to the higher number of VSync's occurring.
Now that it's working on the Iyonix, I can see there's a problem somewhere. Games that run under a high Hz base mode are running very slowly, Fire & Ice for example runs at half speed as does the music. It's not the blitter at fault, as Zarch runs at over 50fps but it is somehow related to the higher number of VSync's occurring.
Re: Pi 2 support
General Pi 2 support (or more correctly, ARM in unaligned Abort mode) is now implemented and I've tested a selection of games on the Pi B+ in ARMv6 strict mode. There's possibly one issue I need to resolve but in general it's compete.
Cortex-A7 support however is a whole different ballgame. Whilst coding the Pi 2 support, it's highlighted a lot of issues related to deprecated instruction behaviour that are possibly affecting RISCOS itself. Its going to take a while to check all these, find the issues in the ROOL source and get the devs to implement workarounds, so it may be some time before all games that work on the Pi work on the Pi 2.
That said, some games are working. Lemmings for example relies on unaligned memory access to work and appears to be running okay, I played the first few levels successfully.
Zarch is an example of one that possibly falls foul of ARMv7 deprecated features, that I need to look into further. Conqueror on the other hand works okay.
Cortex-A7 support however is a whole different ballgame. Whilst coding the Pi 2 support, it's highlighted a lot of issues related to deprecated instruction behaviour that are possibly affecting RISCOS itself. Its going to take a while to check all these, find the issues in the ROOL source and get the devs to implement workarounds, so it may be some time before all games that work on the Pi work on the Pi 2.
That said, some games are working. Lemmings for example relies on unaligned memory access to work and appears to be running okay, I played the first few levels successfully.
Zarch is an example of one that possibly falls foul of ARMv7 deprecated features, that I need to look into further. Conqueror on the other hand works okay.