News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu
avatar_Gryzor

Picros - new game (!?!)

Started by Gryzor, 08:36, 17 October 16

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

gerald

Quote from: roudoudou on 20:02, 29 January 17

I heard about this bug


It never happened on my (two) CPC+ (but with Arnold emulator yes)


Maybe an hardware issue on your machine?
It happen on my GX4000 which I know has some reset value that are not 'expected'.
However I did not see any obvious missing bits in that part code  :(

arnoldemu

I will explain what is happening on arnold emulator:

At power on PRI is reset to 0. This means standard CPC interrupts are active.
At 9095 BC0D is set to D9 which is the correct value.

At this point register &D is the currently selected CRTC register.

There is lots and lots of setup code. Therefore a CPC style interrupt is waiting to be serviced.

Code at 9715 has an EI.

9715

EI
LD BC,&BC08
OUT (C),C
LD BC,&BD00
OUT (C),C
EI

What happens is that the EI is executed, but interrupts are not enabled yet. This happens *after* the next instruction.

LD BC,&BC08 is executed and immediatly after this the interrupt is acknowledged and the interrupt function at 0038 is executed.

Code goes to 9766 and ends at 99f6. Before 99f6 there is joystick scanning code. This sets BC to F600.

The interrupt routine is not guarded by any push or pops and so when execution returns to 9719 BC is set to F600 and a I/O write to F600 then happens.

register &D is still selected. ;)

Next this happens

LD BC,&BD00
OUT (C),C

is executed.

This sets &D to 0 and changes the offset  :o

I changed the first EI to NOP and it all works.

So my question is now:

Why didn't all Plus/GX4000 show this problem? @Ast and @roudoudou which Plus did you test it on and please can you tell me the numbers written on the ASIC? @gerald please tell me the numbers on your asic.




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

roudoudou

Nice analyse. I tell you tonight for serial number

Ast

#28

Works fine on my Gx4000 & my 6128 Plus.

Ast's Gx4000
Ast's 6128 Plus

I Will test it on my neighbour's one.
_____________________

Ast/iMP4CT. "By the power of Grayskull, i've the power"

http://amstradplus.forumforever.com/index.php
http://impdos.wikidot.com/
http://impdraw.wikidot.com/

All friends are welcome !

roudoudou

Quote from: Ast on 11:27, 31 January 17
Works fine on my Gx4000 & my 6128 Plus.

Ast's Gx4000
Ast's 6128 Plus

I Will test it on my neighbour's one.


written on the ASIC ;)  not the machine serial number

Ast

#30
Quote from: roudoudou on 13:14, 31 January 17

written on the ASIC ;)  not the machine serial number


Arf ! I still was in my dreams....


Version G for my Amstrad 6128 plus
http://amstradplus.forumforever.com/image/110/c/1/c/img_1136-5181e96.jpg.htm

Version C for my Gx4000
http://amstradplus.forumforever.com/image/110/e/7/7/img_1137-5181eab.jpg.htm
_____________________

Ast/iMP4CT. "By the power of Grayskull, i've the power"

http://amstradplus.forumforever.com/index.php
http://impdos.wikidot.com/
http://impdraw.wikidot.com/

All friends are welcome !

villain

Thanx for finishing it. :-) But why did BDC Iron gave the project up?

Kris

Can't help you about ASIC #



arnoldemu

#33
My GX4000 and 6128Plus have this version:

40489 24380F002 9029EAI

I will check my 464plus in a couple of days time and try the cart (without my fix) on all.

@Ast I can't see the picture from your gx4000 but the version is the same as your 6128 plus.

I add your ASIC version here so that it's ok if the picture is removed one day:

arnoldemu: 40489 24380F002 9029EAI (MC0122C) and 40489 24380F002 9029EAI
Ast: 40489 24380F002 9032EAI and 40489 24380F002 9031EAI (?)
Kris: secret (MC0122E)
roudoudou: 40489 2430F002 9041YAI (MC0122A) and 40489 2430F002 9050EAI (MC0122E)



40489 is the model number
24380F002 is probably the ASIC/Gate-Array type.
My games. My Games
My website with coding examples: Unofficial Amstrad WWW Resource

arnoldemu

Quote from: Kris on 20:54, 31 January 17
Can't help you about ASIC #



Kris is the logo ok on the title for you? Or do you see the bad offset in the picture?

Are you overclocking the ASIC? ;)

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

Kris

Yes mine is OK :) (even@ 6mhz  ;D )

roudoudou

#36
Here are my CPC+ (funny to see differents straps and capacitors...)


click to enlarge (the pictures   ;D  )

EDIT:

ASIC 9014YAI

fuck can't read the second, i re-open the case...






Ast

Quote from: Kris on 20:54, 31 January 17
Can't help you about ASIC #



@Kris : you are a joker !!!
_____________________

Ast/iMP4CT. "By the power of Grayskull, i've the power"

http://amstradplus.forumforever.com/index.php
http://impdos.wikidot.com/
http://impdraw.wikidot.com/

All friends are welcome !

roudoudou

9050EAI for the other one

Kris

Quote from: Ast on 21:15, 31 January 17
@Kris : you are a joker !!!


I installed this heatsink several years ago....don't want to remove it  :P

roudoudou

Rity on amstrad.eu told me his 6128+ with an Asic 9026EAI has no problem

robcfg

The last code can probably be the manufacturing date and factory code.


So 9026EAI would be week 26 of year 1990 and factory code EAI.


The Konami SCC article on wikipedia seems to confirm it. It's year, week and factory code. EAI being one of Toshiba's semiconductor plants.


As far as I know, there are no different ASIC models. The only issue could be due to manufacturing differences.

arnoldemu

Quote from: robcfg on 22:11, 31 January 17
As far as I know, there are no different ASIC models. The only issue could be due to manufacturing differences.
I have heard claims that there are so I am trying to work out how true this is and if there are any differences.
If I can find one of these early asics and a later asic I can make tests for them.

The differences that are seen may be how the game is run.

It may be that it works best with the C4CPC menu rather than using one of it's cartridge slots, or maybe there is some timing difference with when the interrupts are started and active?


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

roudoudou

Quote from: arnoldemu on 08:13, 01 February 17
It may be that it works best with the C4CPC menu rather than using one of it's cartridge slots, or maybe there is some timing difference with when the interrupts are started and active?


You're right, starting from the menu, interrupts are already started! I did not make MANY tries on the same machine to see if i can have both behaviours!

roudoudou

Sorry for the delay, i had no time...


Thanks again Kevin for finding the last bug!


Here is the fixed CPR!

GOB

Quote from: villain on 20:21, 31 January 17
Thanx for finishing it. :-) But why did BDC Iron gave the project up?

I don't understand "gave the project up"... ^^

This game was made for the amstrad.eu last contest. i respect the deadline, but at the last hour, while the game work perfectly on winape, the first try on a real cpc+ revealded bugs...
I have no more time to debugged because the contest is over. So i released the game at this actual state...
After the result (2nd), i was really boring about this fucking bugs. For me it's over and i prefer to start new game.
So, thank to Roudoudou to patch picrocs, i'm happy to play my game on real hardware, i think that i will end up to debug that one day, but really this fucking bugs at the last minute disgusted me and the result of the contest not satisfied me.

villain

Quote from: GOB on 11:44, 04 February 17
I don't understand "gave the project up"... ^^


Thanks for the "background story". That's really understandable!  ;D

arnoldemu

Quote from: GOB on 11:44, 04 February 17
This game was made for the amstrad.eu last contest. i respect the deadline, but at the last hour, while the game work perfectly on winape, the first try on a real cpc+ revealded bugs...
I have no more time to debugged because the contest is over. So i released the game at this actual state...
It's a fun game and nicely realised for the deadline :)
I also had fun helping to fix the final bug. :)

I think everybody should know that commercial games have bugs and that is why on ps4 and xbox one there are often day 1 patches to download. The team fixes as many bugs as possible before the game must go into submission and for physical releases for duplicators. A bug triage decides which bugs are priority and which are must fix and the team fixes those and leaves the less important ones. Often some small bugs make it into the final game. Sometimes if it's possible then a day 1 patch is made available to fix the most important bugs.

This bug I fixed helped me to realise a problem with Arnold's debugger. I have changed step with f11, and now when I step through the code I see it going into the interrupt handler. :) Now it will be more obvious with this kind of problem. :)


:)


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

GOB

Quote from: arnoldemu on 14:25, 04 February 17
This bug I fixed helped me to realise a problem with Arnold's debugger. I have changed step with f11, and now when I step through the code I see it going into the interrupt handler. :) Now it will be more obvious with this kind of problem. :)


:)

So if my bugs help you to fixed a problem on Arnold, i'm happy to have made this bug ^^

Thanks to you. Hope that everybody will love this picrocs ;)

Powered by SMFPacks Menu Editor Mod