News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

arnold wip

Started by arnoldemu, 20:52, 20 January 16

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

arnoldemu

Quote from: genesis8 on 10:00, 17 October 16
Hello,


http://cpctech.cpc-live.com/arnoldsrc.zip is still the good archive ?
Yes it is the current archive.


Quote from: genesis8 on 10:00, 17 October 16
I just tried to compile again on another pi, and it fails on crtc.c.O


wxwidget 3.0 and sdl1.2 installed before.
I have fixed a compile problem in my working version.

Quote from: genesis8 on 10:00, 17 October 16
Still november for next version available ?
Yes, but it may be middle to end of november.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

fgbrain

I think I found a bug !!

[My version is Build Date: Jun 11 2016 Build Time: 08:03:54]

I load a certain snapshot for 6128 plus... Sorry I cant share this at the moment (WIP)

My code is using the C7 bank and C1 constantly for a gfx buffer...
Many times per frame...

The exact snapshot works fine on WinAPE but not on Arnold.

(must add that my previous version which didn't use C1 worked fine)
_____

6128 (UK keyboard, Crtc type 0/2), 6128+ (UK keyboard), 3.5" and 5.25" drives, Reset switch and Digiblaster (selfmade), Inicron Romram box, Bryce Megaflash, SVideo & PS/2 mouse, , Magnum Lightgun, X-MEM, X4 Board, C4CPC, Multiface2 X4, RTC X4 and Gotek USB Floppy emulator.

arnoldemu

Quote from: fgbrain on 21:48, 24 November 16
I think I found a bug !!

[My version is Build Date: Jun 11 2016 Build Time: 08:03:54]

I load a certain snapshot for 6128 plus... Sorry I cant share this at the moment (WIP)

My code is using the C7 bank and C1 constantly for a gfx buffer...
Many times per frame...

The exact snapshot works fine on WinAPE but not on Arnold.

(must add that my previous version which didn't use C1 worked fine)
In the current released of arnold wip the snapshots are limited to 64KB because I didn't add support for memory expansion devices.
I will fix that this weekend :)
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

arnoldemu

Quote from: arnoldemu on 10:16, 25 November 16
In the current released of arnold wip the snapshots are limited to 64KB because I didn't add support for memory expansion devices.
I will fix that this weekend :)
I have been working on this and I found quite a few bugs that I am fixing.
(Dk'tronics expansion devices are now supported and I fixed a problem decompressing some snapshots.. more fixes to come as I work on it).

BTW, release of Arnold has been delayed while I fix this AND while I wait for a scart cable. I had to stop my testing until I get the cable (this week).





My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

robcfg

Thanks for the heads up!

Shaun M. Neary

Just wanna say I'm loving the progress on this. I downloaded the latest binary and it ran quite well on OS X 10.10.5


Sound is a little choppy and there's no way to quit it without forcing quit (both of which I'm sure you're aware of), but this time last year, we could barely open the binary without crashing, so it's really come a long way in that time.


Keep up the good work!


Happy Christmas, everyone! =D

Currently playing on: 2xCPC464, 1xCPC6128, 1x464Plus, 1x6128Plus, 2xGX4000. M4 board, ZMem 1MB and still forever playing Bruce Lee.
No cheats, snapshots or emulation. I play my games as they're intended to be played. What about you?

RockRiver

#106
Aleste emulation, yeahhh!! :D
Windows version Build Date: Jun 11 2016

*How can I enter to CPC mode?
Hold SHIFT during boot (or reset)

*Go to Aleste/MSX-DOS mode from AMSDOS?
Type    |msx

*How can I enter to Bios Configuration?
Hold CLR during boot --> wich key in PC windows keyboard for CLR? "Insert"
(ESC to go to Boot Screen)
but Bios Screen or Boot Screen doesn't be OK. Maybe some screen options needed...

*Boot Screen (now screen with "television interference") try to load direct a msx-dos floppy disk.

Regards and Thanks!!, Kevin, for your work.

greatxerox

Hello Arnold  !


some news about dev of Arnoldemu ?

arnoldemu

#108
Finally, a new version! :)

EDIT: fully working as of 13/05/2017 14:49. If you downloaded the version earlier please download. There was a bug where Plus configuration could not be activated.

Windows exe:
http://www.cpctech.org.uk/setup.zip

Source (for linux or mac or windows):
http://www.cpctech.org.uk/arnoldsrc.zip

Thanks to Aeliss again for his fixes.

I did a *lot* of testing. A lot of FDC tests, and I had to re-write the tests and had to write loads more - with more to come next time!

The execution of FDC commands is more exact. The timing is not exact (I need to re-write the code for that) but the execution of the instructions and their results is much better. The original fdc tests missed quite a lot.

Changes since last release:

Gate-Array:
- changed power-on colours for gate-array to be 0 (grey) following discoveries from gerald
- updated GA IN causing write to work on all GA types (previously only type 4)
- fixed lum calculation. It was going out of range and causing a bad result in the lumfirm test.

Disc/FDC:
- fixed FDC: Format SC=0 results in 256 sectors.
- fixed read data with N=0: read size depends on bit 0 of DTL
- fixed if drive is disabled report the correct information for sense drive status
- fixed a bug in the fdc recalibrate command. (sometimes it got stuck)
- fixed correct command decoding of recalibrate command
- fixed correct command decoding of seek command
- fixed correct command decoding of sense interrupt status
- fixed correct command decoding of sense drive status
- fixed incorrect reporting of drive when it's not ready and doing a seek or recalibrate. it was always reporting drive 0 by mistake.
- fixed when fdd busy state is cleared.
- fixed result when ready changes during recalibrate or seek
- fixed FDC/FDD step rate timing (it was too fast)
- fixed FDC/FDD step rate at power on (it was not set correctly)
- fixed reporting of ST3 "two side" (matches write protect on EME-157)
- fixed: PCN is reset to 0 at FDC power on
- fixed: DMA mode and step rate of 0 is set at FDC power on
- implemented scan equal, scan low or equal and scan high or equal commands
- fixed: if drive A was only enabled, then discs could not be read. Drive A can now be enabled on it's own.
- fixed: removed step time per drive. gerald has shown the step rate is based on a multiple of an internal timer and that all drives are stepped from that.
- fixed: sending seek multiple times *WHILE* it is seeking is ok. Before the fix there would be a hang.
- fixed: drive polling is not done after every cpu instruction it is now done at the correct rate.
- a bad calculation meant some extended disk images were not recognised as correctly formed. Fixed.
- if autostarting a disc and the "auto start drive" is not enabled then enable it.

Snapshot:
- fixed load and save of snapshots with RAM more than 64KB. Previous code only supported 64KB because of support for devices broke the previous method. The code now looks at the built-in RAM of the active machine AND the ram provided by dk'tronics compatible ram expansions to determine what should be saved and how much can be loaded.
- fixed bugs in v3 ram block decompression.
- if v3 compressed block size is >=65536 then winape stores it uncompressed. Check for this size and copy direct.
- We now save blocks as length 65536 if they can't be compressed.
- in the snapshot save dialog you can see where each block comes from (internal, device or not mapped) and the list can be filtered according to what will be saved into the snapshot according to the selected snapshot version. V2 has a limitation where data must be continuous so you can click the checkbox to see which blocks will actually be saved.
- You will be warned on save if the configuration can't be saved into the snapshot accurately. This happens if you have devices activated, or are running in KC Compact or Aleste mode. NOTE: The snapshot file format is limited and doesn't save all information accurately.
- fixed bugs in CPC+ block reading and writing. Now supports the location Winape uses for it's A0 port value. This means more snapshots from Winape will load.
- When loading a snapshot Arnold will determine the configuration requested by the snapshot and the actual configuration and will report if the snapshot may not be loaded correctly. You can use the button on the dialog to configure the system to attempt to match the requirements. At all times you can click OK to try and load the file.
- When loading a snapshot Arnold will tell you if there are some blocks in the snapshot file which are not handled (applies to v3).

Cartridge:
- there was a bug with the way "mirrored" pages were calculated for cartridges. This caused problems for 512KB cartridges. This has been fixed.

Roms:
- os, basic and amsdos override roms with amsdos headers can now be used.

Devices:
- changed the way readport works for devices. Previously if the device didn't assert the bus, a value was always returned and it was 0x0ff (this was not correct), now the device reports if it did assert the bus or not and the data is taken if it has otherwise data remains unchanged if it didn't. This allows the "bus" value to remain unchanged if the device doesn't change it. The emulation is now more correct. This makes symbiface 2 device and uide devices correct when reading from them.
- added emulation of ROMBO rom-board. Thanks to ngroom on cpcwiki for testing his rombo rom board
- added emulation of Jon Bradbury's uIDE 16 for CPC (made with his permission). Needs testing on a real device.
- fixed Brunword Mk2 emulation (when upper rom is overriden or not and write through for 4000-7fff)
- fixed Brunword Mk2 reset and power on state
- fixed Amram2 expansion rom emulation (it wasn't asserting ROMDIS so roms would not be active as they should be)
- fixed Amram2 write to ram; it is allowed regardless of upper rom enabled state. Previously the code did it only if upper rom was enabled.
- fixed Amram2 reset and power on state (previously nothing was done)
- added dk'tronics 256kb ram. Needs testing on a real device.
- added dk'tronics 256kb silicon disk. Needs testing on a real device.
- added x-mass (tested against my own X-Mass)
- added emulation of 8-bit transfer for ATA (tested on X-Mass)
- fixed ATA 16-bit data emulation (previously acted like it was 8-bit). Tested on Symbiface 2.
- added master/slave emulation for symbiface 2.
- added drive jumper settings for ide device, supports: master/single, master with slave, slave
- added mode switches to multiplay (you can now choose between joystick or mouse input)  (needs testing on real device. based on specification document)
- multiplay joystick 1 was broken. now fixed (needs testing. based on specification document)
- multiplay input didn't seem to work correctly. now fixed. (needs testing. based on specification document)
- device system roms with amsdos headers can now be used. (e.g. hackit rom from cpcrulez)
- fixed multiface 2 device (checked against my own multiface 2) (emulation is much more accurate and the code has been changed to be more like the other devices)
- the device list can now be filtered through the context menu.
- in the Device Switches dialog, particularly with a device with many switches, the switch state was not being saved correctly after editing. This has been fixed.
- the default configuration for a device was being overwritten when reading configuration and it had not been set. This has been fixed. For example, this mean the default configuration for multiplay (which was set to joysticks) was being reset to using mouse.

Mac:
- if you had text in the auto-type dialog, closed the dialog, re-opened and dragged and dropped a file over it then the text would have been pasted onto the end of the original text. This then resulted in both pieces of text being typed. Now fixed.
- if you chose to define keys for joystick it could crash.

Autotype:
- smart quotes and smart hyphens would not be auto-typed correctly. These characters are automatically translated into the CPC equivalents when the autotype text is typed.
- if autotype finds a character which it can't translate it will now stop instead of continuing.
- auto start/auto type will now do a power on/off rather than a reset. If invalid data is written to the FDC then a reset will not correctly restart it but a power on/off will. So better to use power on/off.

General UI changes:
- added CPC464 with DDI-1 configuration
- positional keyboard configuration didn't show correctly on lubuntu. Fixed.
- if a zip file had an implied directory (i.e. it had a file such as test/disk but no actual test/ entry, then this directory would not be found and displayed in the archive window. This has been fixed.
- In the Media Status dialog if a new disk has been inserted and it hasn't been saved it now shows "Unsaved file".
- In the Drive status dialog it now reports the track 0 signal from the drive.
- the archive browser dialog now has a title based on what you are picking. (e.g. "Drive A")

Keyboard:
- typing using translated keyboard mode is much more responsive now. The key presses are now queued up and played back. It can now keep up with my typing.

Graphics Viewer:
- You can enable display of transparency. A pattern for transparent will be drawn. This is useful to see which pixels of a sprite are not drawn. e.g. pen 0 for Plus hardware sprites is transparent.
- You can now flip the display vertically. This is useful to view sprites which are stored upside down.

Joysticks:
- Update list of physical joysticks/joypads when entering joystick dialog rather than when you pick physical device option.
- Improved joystick dead zone detection and improved response for directions when using an analogue pc pad for cpc digital joysticks. Thank you to Aeliss.
- joystick setup will default to keyboard for digital joysick 0 if no gamepad is connected. NOTE: joystick key override setting is disabled by default so you will need to enable it.

Debugging:
- you can now set a memory breakpoint from the memory dump window. Click on the byte, address or ascii character then right click and choose "memory breakpoint..". You can configure it to be when memory is read or written.
- removed "clear instruction" and "put debug opcode" these were not flexible enough and they were destructive to the ram.
- SSCR vertical value was reported incorrectly.
- PPI Control Read/Write IO breakpoint was incorrect. It was breakpointing when port C was being read/written
- improved "step into" (f11). If you step into and an interrupt occurs you will then step into the interrupt. Previously it skipped the interrupt and it was not obvious it had happened.
step into and step over should work the same as before apart from this change.
- labels from Winape and RASM can now be imported via the Label Manager
- fixed: the debug menu item used for turning the border on or off was not updating incorrectly.
- sometimes breakpoints could not be placed correctly around address 0. This has been fixed.

Building:
- Arnold gave an error about libexpat when compiling on lubuntu. Fixed.
- Fixed inkz80 compile
- Windows version of Arnold is now built with Visual studio 2015 community edition.
- Windows version is now built using SDL 2.0.5
- cmake build has been updated for Visual Studio 2017 RC.

Tests:
- FDC tests have been re-written and made much more comprehensive.
- in the disc tests, when the motor is turned off, wait some time for the motor to be "fully off" and the drive to be "not ready"
Before it was turning it off and the next test could be run with the motor still slowing down and the drive could still be ready
depending on how long it takes to slow down.
- "SUCCEEDED" has been changed to "PASS"
- "FAILED" has been changed to "FAIL"
- I have grouped tests together into directories.
- I have added information to describe what each test is doing before it starts. This tells you if it is automatic (i.e. it
tests and then verifies the result), it is interactive (the user must do something), it is visual (visual confirmation by the user is
required) or audible.
- I have improved the feedback.
- Some tests were reporting data - there was no verification or checking the values - these were for debugging against CPC configurations which I don't have these have been disabled for this release.
These will be re-enabled when I confirm the exact configuration that triggers the results I am seeing.
- Many tests, especially the visual ones now have indication on the screen describing what is expected (e.g. vblank test has a line above and below the vblank and text to indicate what you should see).
- I have added a description of the computer systems I use for testing (see desc.txt). Use a similar computer to confirm the result.
- Some tests require you to answer questions about the computer configuration used, some tests are disabled/skipped if the configuration
doesn't allow that test to function. In addition some tests require specific configurations or their results differ on different
configurations.
- changed PPI port B read to be more reliable: two tests a) vsync on always b) vsync off always
- added placeholder aleste 520 ex tests (These are waiting for testing and feedback on a real machine)
- added kc compact mode 3 and colour changing tests
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

ronaldo

@arnoldemu: I have tried to compile it under linux using your script make_arz80_release.sh and got this message

[  2%] Building C object cpc/CMakeFiles/cpc.dir/amdrum.c.o
retro/arnold/src/cpc/amdrum.c:21:23: fatal error: emudevice.h: File does not exist

I have checked for it and the file is not included. Could it possible be missing in your distribution?

Thanks for such a lot of work :D

arnoldemu

Quote from: ronaldo on 16:35, 13 May 17
@arnoldemu: I have tried to compile it under linux using your script make_arz80_release.sh and got this message

[  2%] Building C object cpc/CMakeFiles/cpc.dir/amdrum.c.o
retro/arnold/src/cpc/amdrum.c:21:23: fatal error: emudevice.h: File does not exist

I have checked for it and the file is not included. Could it possible be missing in your distribution?

Thanks for such a lot of work :D
I zipped it on windows and it has it as "EmuDevice.h".

Please rename it in the cpc directory, I will see if I can force windows to rename it and I'll re-zip it on linux.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

ronaldo

That was it :). I looked for the file using find and, of course, it wasn't there because of the case.

Now I have renamed it, it compiles :D. I'm going to test it :)

CraigsBar

Any chance of a osx binary build?

Oh and also could the Brunword v2 or v4 be modified for a c4cpc cart?

Sent from my ONEPLUS 3t using Tapatalk

IRC:  #Retro4All on Freenode

roudoudou

Hi Kevin, i noticed some artefacts in the border whereas i have set the 7th bit of SSR to extend border but it do not work most of the time.

My pronouns are RASM and ACE

arnoldemu

Quote from: CraigsBar on 18:31, 13 May 17
Any chance of a osx binary build?
I am having troubles, wxWidgets on Mac has some bugs.

Quote from: CraigsBar on 18:31, 13 May 17
Oh and also could the Brunword v2 or v4 be modified for a c4cpc cart?
Not sure, it depends on if the page at 4000 is active at the same time as the page at c000 and 0000. I will need to run the program and look at it to see which combinations are active.

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

arnoldemu

Quote from: roudoudou on 21:45, 19 May 17
Hi Kevin, i noticed some artefacts in the border whereas i have set the 7th bit of SSR to extend border but it do not work most of the time.
Ok thanks. I will do more testing.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Aeliss

#116
Quote from: roudoudou on 21:45, 19 May 17
Hi Kevin, i noticed some artefacts in the border whereas i have set the 7th bit of SSR to extend border but it do not work most of the time.

I can't see garbage on game that use it.
Its not the 7th bit but the bit 7 ? ( 0-3 horizontal 4-6 vertical 7 for the mask.)
How I can reproduce your bug ?

roudoudou

Quote from: Aeliss on 17:12, 23 May 17
I can't see garbage on game that use it.
Its not the 7th bit but the bit 7 ? ( 0-3 horizontal 4-6 vertical 7 for the mask.)
How I can reproduce your bug ?


hmmmmmm, i think i miss the point
the problem is not the SSR but the screen position
but i cannot reproduce it in basic (register 2 to 51 do not display the first word as expected)
My pronouns are RASM and ACE

arnoldemu

Quote from: roudoudou on 00:00, 24 May 17

hmmmmmm, i think i miss the point
the problem is not the SSR but the screen position
but i cannot reproduce it in basic (register 2 to 51 do not display the first word as expected)
I think the bug in arnold is caused from the timing of the write to the register. I will do more testing and I will find it. :)
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

roudoudou

It may be a limit case as i change the value with a precise timing to keep a perfect 64 nops HBL timing while changing screen position. I'll send you the assembly :)
My pronouns are RASM and ACE

Xifos

Congrats for your emulator !
:)

It works great.

I just noticed a problem with my xbox 360 controller : directions can get blocked.
I tried another controller (cyborg saitek), no problem with arnold.
Bu the same xbox controller works with the previous version of arnold, with winape and pc games...
I wonder if it's only my 360 controller, or all the 360 controllers...

arnoldemu

Quote from: Xifos on 09:07, 27 May 17
Congrats for your emulator !
:)

It works great.

I just noticed a problem with my xbox 360 controller : directions can get blocked.
I tried another controller (cyborg saitek), no problem with arnold.
Bu the same xbox controller works with the previous version of arnold, with winape and pc games...
I wonder if it's only my 360 controller, or all the 360 controllers...
I made some changes to the deadzone calculation with the joysticks. I will test again on the xbox 360 controller and fix the problems you report.

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

arnoldemu

Quote from: Xifos on 09:07, 27 May 17
Congrats for your emulator !
:)

It works great.

I just noticed a problem with my xbox 360 controller : directions can get blocked.
I tried another controller (cyborg saitek), no problem with arnold.
Bu the same xbox controller works with the previous version of arnold, with winape and pc games...
I wonder if it's only my 360 controller, or all the 360 controllers...
I tested this and it is working ok with my 360 controller.

Please check the configuration for the joystick and see if X Axis and Y Axis are mapped. (Click the configure button in the joystick dialog to see this).
You can re-configure the directions if this has happened.

This can happen where there are older settings stored.

My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

Xifos

When i try to remap the joystick (digital joystick(0) > xinput controller > define), it doesn't work.
Neither directions nor fire buttons.
And the controller won't work at all until i restart the emulator...

Hwikaa

Hi there!


I'm desperately trying to build the latest version of Arnold on my Mac, following the steps described in build_notes.txt; everything goes perfectly fine until I try to run ./make_mac.sh, which gives me the following error message:



[...]

[ 47%] Building C object cpc/CMakeFiles/cpc.dir/sdlsound.c.o
/Users/mathieu.delaruelle/.Trash/src 12.00.14/cpc/sdlsound.c:35:10: fatal error:
      'SDL2/SDL.h' file not found
#include <SDL2/SDL.h>
         ^
1 error generated.
make[2]: *** [cpc/CMakeFiles/cpc.dir/sdlsound.c.o] Error 1
make[1]: *** [cpc/CMakeFiles/cpc.dir/all] Error 2
make: *** [all] Error 2



... Help? Please?  :D

Powered by SMFPacks Menu Editor Mod