Index du Forum
IDENTIFICATION SERVEUR : 51.77.218.153 - CLIENT : 3.233.221.149

 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

TOY SHOP
Aller à la page Précédente  1, 2, 3, 4  Suivante
 
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Lun 24 Fév 2014, 5:39    Sujet du message: Répondre en citant

toinet a écrit:
I skipped the $D000 execution even if it is loaded into memory.


I was after a minimum number of changes needed.

toinet a écrit:
I played with GENTOY yesterday and saw that it has a table of track/sectors to load but all are in the high tracks! Nothing there for the first 18-sec tracks.
Do other .OVR files use such tracks?


Yes, tedit uses tracks 0 and 1 from side B. prtoy loads from tracks 1 and 2, but I don't know which side. It might be reloading the title screen.

toinet a écrit:
The program does not behave well on a IIgs: the joystick routine makes the menus unusable, same with Swet16 (low and high speeds)


The joystick centering is weird. It might work if you hold the joystick in one corner while the program boots.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Mar 04 Mar 2014, 4:48    Sujet du message: Répondre en citant

http://pferrie.host22.com/misc/toyshop.zip
can someone please try it and tell me if there are any bugs?
I will work on a description about how I did it.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 3043
Localisation: Le Chesnay, France

MessagePosté le: Mar 04 Mar 2014, 22:03    Sujet du message: Répondre en citant

qkumba a écrit:
http://pferrie.host22.com/misc/toyshop.zip
can someone please try it and tell me if there are any bugs?
I will work on a description about how I did it.


He he, it looks like you did it, Peter!
Works great on my machines here.
My hat's off to you!
Antoine
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
amauget



Inscrit le: 06 Déc 2009
Messages: 962
Localisation: Nantes

MessagePosté le: Mar 04 Mar 2014, 22:54    Sujet du message: Répondre en citant

Hello Peter,
qkumba a écrit:
can someone please try it and tell me if there are any bugs?

The disk B isn't recognized in AppleWin (because of missing volume number ?). Steps to reproduce :
1) Boot disk A
2) Choose a toy
3) Ask to customize it

Great job, anyway !
_________________
Antony
Apple II forever
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Mer 05 Mar 2014, 17:45    Sujet du message: Répondre en citant

Hello Antony,

I cannot reproduce the problem that you have, when I use AppleWin 1.23.
You must place side B in drive A in order to customize the toy.
Drive B is used only for loading saved toys. Can you please try it again?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
amauget



Inscrit le: 06 Déc 2009
Messages: 962
Localisation: Nantes

MessagePosté le: Sam 08 Mar 2014, 9:17    Sujet du message: Répondre en citant

Peter,

Here is exactly what I'm doing :
1) Insert toyshopa.dsk in drive A
2) Boot AppleWin 1.20
3) Choose a toy
4) Ask to customize it
5) Insert toyshopb.dsk in drive A, press return
6) Toyshop continues to ask for Disk B


I will try to upgrade to 1.23.

Update : it works flawlessly with Applewin 1.24. Embarassed
Thanks Peter !
_________________
Antony
Apple II forever
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Lun 10 Mar 2014, 5:36    Sujet du message: Répondre en citant

Here is how it was done:

I showed already how I rewrote the side A. Side B is the interesting one.

First two tracks are the fonts.

Code:
   00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11
00 t0 t0 t0 t0 t0 t0 t0 t1 t1 t1 t1 t1 t1 t1 t2 t2 t2 t2
01 t2 t2 t2 t3 t3 t3 t3 t3 t3 t3


That became

Code:
   00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
00 t0 t0 t0 t0 t0 t0 t0 t1 t1 t1 t1 t1 t1 t1 t2 t2
01 t2 t2 t2 t2 t2 t3 t3 t3 t3 t3 t3 t3


TEDIT is the one that makes use of it. This is the code that constructs the read from 18-sector tracks, supporting moving from the end of one track to the start of the next one.

Code:
5B75 A0 00                                   LDY     #0
5B77
5B77                         loc_5B77:
5B77 B9 00 DE                                LDA     $DE00,Y
5B7A 99 9D 5B                                STA     byte_5B9D,Y
5B7D C8                                      INY
5B7E C0 12                                   CPY     #$12
5B80 90 F5                                   BCC     loc_5B77
5B82
5B82                         loc_5B82:
5B82 B9 00 DE                                LDA     $DE00,Y
5B85 99 A3 5B                                STA     byte_5BA3,Y
5B88 C8                                      INY
5B89 C0 24                                   CPY     #$24
5B8B 90 F5                                   BCC     loc_5B82


Since our tracks are only 16 sectors large, we only need to support 32 slots.

Code:
5B75 A0 00                                   LDY     #0
5B77
5B77                         loc_5B77:
5B77 B9 00 DE                                LDA     $DE00,Y
5B7A 99 9D 5B                                STA     byte_5B9D,Y
5B7D C8                                      INY
5B7E C0 10                                   CPY     #$10
5B80 90 F5                                   BCC     loc_5B77
5B82
5B82                         loc_5B82:
5B82 B9 00 DE                                LDA     $DE00,Y
5B85 99 A5 5B                                STA     byte_5BA5,Y
5B88 C8                                      INY
5B89 C0 20                                   CPY     #$20
5B8B 90 F5                                   BCC     loc_5B82


Then we just add our sector read routine in place of the 18-sector read routine, and the calling convention remains the same.
That was the easy one.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Lun 10 Mar 2014, 6:04    Sujet du message: Répondre en citant

Tracks $16+ are models and decals. They are stored overlapping, and the sizes are not constant, so too hard to separate them and move only some data to other tracks. I had to move everything to lower tracks.

The objects are loaded via a table of track/sector pairs:

Code:
5E65 .BYTE  $1F,   8, $1F,  $B, $1F,  $E, $20,   0, $20,   8, $20, $10, $21,   5, $21,   8,  $21,  $C
5E77 .BYTE  $19, $10, $19, $11, $1A,   1
5E7D .BYTE  $16,   9, $16,  $D, $16, $10
5E83 .BYTE  $1C,  $A, $1D,   0, $1D,   8, $1D,  $E, $1E,   2, $1E,   9
5E8F .BYTE  0
5E90 .BYTE  0
5E91 .BYTE  $19,   8, $19,  $B, $19,  $E
5E97 .BYTE  $18,  $A, $18,  $D, $18, $11, $19,   3, $19,   4, $19,   6
5EA3 .BYTE  $16,   0, $16,   3, $16,   6
5EA9 .BYTE  $17,   5, $17,   9, $17,   1
5EAF .BYTE  $1A,   2, $1A,   3, $1A,   4, $1A,   5, $1A,   6, $1A,   7
5EBB .BYTE  0
5EBC .BYTE  $1A,  $E, $1B,   0, $1B,   4
5EC2 .BYTE  $1B,  $C, $1B,  $A, $1B,   8
5EC8 .BYTE  $1B,  $E, $1B, $11, $1C,   2
5ECE .BYTE  $1C,   3, $1C,   6, $1C,   8
5ED4 .BYTE  $1A,   9, $1A,  $B, $1A,  $D
5EDA .BYTE  $1E, $11, $1F,   2, $1F,   5
5EE0 .BYTE  $17,  $D, $18,   0, $18,   5
5EE6 .BYTE  $21, $10, $22,   1, $22,   4


That's a lot of extra sectors. We needed two more tracks to store it all, and to map the result to 16 sectors. The translation looks like this:

Code:
1600->1400
1601->1401
1602->1402
1603->1403
...
160d->140d
160e->140e
160f->140f
1610->1500
1611->1501
...
2208->2200
2209->2201
220a->2202
220b->2203
220c->2204
220d->2205
220e->2206
220f->2207
2210->2208
2211->2209


The translation table in both GENTOY (side A) and GEDIT (side B) had to be changed. The tables are identical in both files, only the address is different.

Code:
5E65 .BYTE  $1E,  $A, $1E,  $D, $1F,   0, $1F,   4, $1F,  $C, $20,   4, $20,  $B, $20,  $E,  $21,   2
5E77 .BYTE  $18,   6, $18,   7, $18,   9
5E7D .BYTE  $14,   9, $14,  $D, $15,   0
5E83 .BYTE  $1B,   6, $1B,  $E, $1C,   6, $1C,  $C, $1D,   2, $1D,   9
5E8F .BYTE  0
5E90 .BYTE  0
5E91 .BYTE  $17,  $E, $18,   1, $18,   4
5E97 .BYTE  $16,  $E, $17,   1, $17,   5, $17,   9, $18,  $A, $17,  $C
5EA3 .BYTE  $14,   0, $14,   3, $14,   6
5EA9 .BYTE  $15,   7, $15,  $B, $15,   3
5EAF .BYTE  $18,  $A, $18,  $B, $18,  $C, $18,  $D, $18,  $E, $18,  $F
5EBB .BYTE  0
5EBC .BYTE  $19,   6, $19,  $A, $19,  $E
5EC2 .BYTE  $1A,   6, $1A,   4, $1A,   2
5EC8 .BYTE  $1A,   8, $1A,  $B, $1A,  $E
5ECE .BYTE  $1A,  $F, $1B,   2, $1B,   4
5ED4 .BYTE  $19,   1, $19,   3, $19,   5
5EDA .BYTE  $1E,   1, $1E,   4, $1E,   7
5EE0 .BYTE  $15,  $F, $16,   4, $16,   9
5EE6 .BYTE  $21,   6, $21,   9, $21,  $C


Then we insert the 16-sector read routines, just like for TEDIT.
But where do we find two extra tracks? It turns out that tracks 2-8 are not referenced by anything. Even though they are 18-sector, it seems that they were originally intended for the models and decals during early development (at a time when SELECT was on side B, and GEDIT was on side A). After the disk layout was finalized, the tracks were left in 18-sector format, so I just moved the DOS files down by two tracks, as well, overwriting some of the unused data.

However, there is another way, that could have preserved even these unused tracks entirely. I found that with the magic of aPLib, I could compress the DOS files from ~47kb to ~23kb, for a saving of ~5 tracks. I could decompress the files when they were loaded, by patching a call to my decompressor at $b6b. The screen memory is never touched, and the decompressor is < 256 bytes, so it fitted easily.
I actually spent many hours debugging this technique already, but I abandoned it when I found that it was not needed. At least, I can keep that code for another time.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 3043
Localisation: Le Chesnay, France

MessagePosté le: Sam 15 Mar 2014, 17:43    Sujet du message: Répondre en citant

Very good! People should know on csa2 Wink

BTW, I wonder whether the models and decals could have been transformed into DOS 3.3 files and used that way. Any possibility?

Antoine
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Dim 16 Mar 2014, 5:34    Sujet du message: Répondre en citant

toinet a écrit:
I wonder whether the models and decals could have been transformed into DOS 3.3 files and used that way. Any possibility?


Yes, it could be done, but it would require a complete understanding of how the offsets are found within the loaded blocks. Even though I disassembled the code, there is an element of p-code involved (calls into high memory regions with byte patterns as parameters, and dynamic stack at $9fxx for other parameters, instead of using $1xx, etc), which I did not study in detail. It would not be easy.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Olivier



Inscrit le: 30 Déc 2011
Messages: 15

MessagePosté le: Mar 25 Mar 2014, 1:43    Sujet du message: Répondre en citant

Citation:
Very good! People should know on csa2
I saw a post about it on csa2 last week, so check Smile

Antony, tu mentionnais il y a une dizaine de jour que le monde est petit, tu ne croyais pas si bien dire ! Pour info, ma carte AP-64E fonctionne, faut juste maintenant que j'essaye de copier les eproms, ce qui est pas encore donné, car je bloque un peu sur les positions du DIP switch :\. Je t'ai envoyé un mail à l'instant à ce propos.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 3043
Localisation: Le Chesnay, France

MessagePosté le: Mer 26 Mar 2014, 13:03    Sujet du message: Répondre en citant

please post to the right place.
i have the notice. i'll check later
av
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
qkumba



Inscrit le: 29 Jan 2012
Messages: 176

MessagePosté le: Jeu 26 Juin 2014, 17:32    Sujet du message: Répondre en citant

the mystery of the data disks is finally solved - after I rewrote the disk handling (even fewer bytes changed now!), and then tried on Virtual ][ which has printer emulation, there is a request to insert a data disk. Then I disassembled PRTOY.OVR more carefully, and I see that all four sides of the two data disks might be requested, depending on the model that was selected.
The data disks contain the full-size bitmapped versions of the models, so they are really necessary. They are fully 18 sector format, and apparently completely full. I have some work yet to do, in that case. Wink It might require the dynamic decompression technique that I used in PoP.
However, I have one advantage here - I need only to compress by 1 sector out of every 9, in order to convert 9x2 sectors to 8x2 sectors per track. The reason is below.

And now a very nice routine for streaming content:

Code:
7763 streambytes:
7763                 LDA     pagehi   ;check for existing content
7766                 BNE     loc_776B ;taken if we have started reading already
7768                 JSR     loadtrk  ;pre-load some content for later
776B
776B loc_776B:
776B                 CMP     #$C0     ;check if reached end of buffer
776D                 BCC     loc_777C ;taken if bytes remain
776F
776F loc_776F:
776F                 JSR     readsec  ;read next 9 sectors, increment track automatically
7772                 BCC     loc_7779 ;taken if no error
7774                 JSR     recalib  ;recalibrate disk and then try read again
7777                 BCS     loc_776F ;loop if error
7779
7779 loc_7779:
7779                 LDA     pagehi   ;get read start position
777C
777C loc_777C:
777C                 STA     1
777E                 LDA     pagelo
7781                 STA     0
7783                 LDY     #0
7785                 LDA     (0),Y    ;fetch byte
7787                 STA     8
7789                 STY     9
778B                 INC     pagelo   ;move to next byte
778E                 BNE     locret_77A3
7790                 INC     pagehi   ;move to next page
7793                 INC     sector   ;and move to next sector
7796                 LDX     sector
7799                 CPX     #$12     ;reached end of track?
779B                 BCC     locret_77A3
779D                 STY     sector   ;zero sector
77A0                 INC     track    ;move to next track
77A3
77A3 locret_77A3:
77A3                 RTS


This routine is called to request individual bytes. It reads 9 sectors at a time to $B700, from either the start or the middle of the track, depending on where on the track the model starts, and the current read position. The pagehi variable is adjusted further, if the model does not start at exactly the aligned sector (so if it starts at sector 3, then the pagehi will be $B7+3, not $B7+0). When the 9 sectors are read completely (the #$C0 check), another 9 sectors will be read. If it's the last 9 sectors in the track, then the track is incremented so that the next read will take the first 9 sectors of the next track.
This kind of buffering is very common in modern runtimes (Visual C, for example), but I have never seen it before on the Apple II.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


Inscrit le: 15 Juin 2007
Messages: 3043
Localisation: Le Chesnay, France

MessagePosté le: Sam 04 Oct 2014, 2:25    Sujet du message: Répondre en citant

And, for extra info, read http://pferrie.host22.com/misc/lowlevel15.htm
av
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
cybernesto



Inscrit le: 01 Jan 2016
Messages: 3
Localisation: Germany

MessagePosté le: Sam 02 Jan 2016, 11:59    Sujet du message: Répondre en citant

I decided to finally dust off my ImageWriter II this week. After lubricating the ribbon winding mechanism under the print head I was finally able to print with my loud printer again.
Without any documents to print I thought to have some fun printing some toys to build with my kids. The san inc crack disk images worked perfectly on OpenEmulator and Catakig but for some reason they don't reliably work on my Apple //c. The startup screen sometimes shows up garbled and the boot stops or it comes clean and hangs after showing the credits. In some rare cases the menu is displayed but the menu letters are shown separated and they cannot be selected. Only once in about 10 boots the program loads and works correctly. But even then printing result in some corrupted graphics.
Maybe some part of the crack relies on the memory pattern present on emulators?
This is a really cool program. I would love to help debug this problem. Let me know how can I help.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE Toutes les heures sont au format GMT + 1 Heure
Aller à la page Précédente  1, 2, 3, 4  Suivante
Page 3 sur 4

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com