Merci pour ton interet, mais par contre ca m'embete un peu de t'envoyer le code source comme ca en prive. Bien sur dans mon esprit je comptais bien un jour les mettre a disposition de qui ca interesse, mais je le voyais plutot sur un site "ouvert", genre avec gestion des sources, possibilite pour d'autres personnes de les modifier, etc. Donc si tu te sens de prendre en charge la gestion d'un tel site, je suis partant.
Enfin voila quoi, est-ce que tu pourrais me donner un peu plus d'infos sur ce que tu comptes faire ?
Je suis desole de faire le maniaque, mais j'ai passe pas mal de temps sur ce code,
ca me ferait plaisir qu'il serve a un beau "projet"

Pour commencer voila le source de MA.COM, le fichier qui gere le "generique":
{$I-} {$C-} {$K-} {$V-} {$F4}
{CODE:$0674}
{DATA:$0380}
PROGRAM MA;
TYPE
tFileCluster = ARRAY[0..255] OF ARRAY[0..127] OF BYTE;
tDtaInfo = RECORD CASE INTEGER OF
1:(blockIdx, blocksNum:INTEGER; width, height:BYTE);
2:(f0, f1:BYTE);
END;
tDecor = ARRAY[1..40] OF ARRAY[1..3] OF BYTE;
tDecorArray = ARRAY[1..4] OF tDecor;
tRegs = RECORD CASE INTEGER OF
1:(AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags:INTEGER);
2:(AL,AH,BL,BH,CL,CH,DL,DH:BYTE);
END;
tSpriteInfo = RECORD
scrOfs:INTEGER; {src offset on screen}
width, height:BYTE
END;
tSpriteBuffer = ARRAY[0..255] OF BYTE;
tTextItem = ARRAY[1..3] OF STRING[20];
CONST
G_SEG:INTEGER = $B800; {C_2823}
TXTCOL1:INTEGER = 0; {C_2825}
TXTCOL2:INTEGER = $FFFF; {C_2827}
C_2829:ARRAY[0..3] OF INTEGER = ($0000, $5555, $AAAA, $FFFF);
VAR
{$I ..\LIB\DATA.PAS}
D_0B72:FILE;
D_0BBE:INTEGER;
C_2831:^BYTE ABSOLUTE $b800:$0000;
{$I MA_CP.PAS}
{$I ..\LIB\MA_CHAR.PAS}
{$I MA_LIB.PAS}
PROCEDURE C_30C0(DUMMY:BYTE);
BEGIN
END;
PROCEDURE C_30D0(BP04:BYTE);
BEGIN
D_0286 := BP04;
TXTCOL1 := C_2829[D_0286];
END;
PROCEDURE C_30F7(BP04:BYTE);
BEGIN
D_0288 := BP04;
TXTCOL2 := C_2829[D_0288];
END;
PROCEDURE C_311E;
BEGIN
INLINE(
$31/$D2/ {XOR DX,DX}
$8E/$C2/ {MOV ES,DX}
$26/$8B/$16/$63/$04/ {MOV DX,ES:[0463h]}
$83/$C2/$06/ {ADD DX,+06}
$EC/ {IN AL,DX}
$A8/$08/ {TEST AL,8}
$75/$FB/ {JNZ C_3131}
$FA/ {CLI}
$EC/ {IN AL,DX}
$A8/$08/ {TEST AL,8}
$74/$FB/ {JZ C_3137}
$FB {STI}
);
END;
CONST C_3144:ARRAY[1..3] OF INTEGER = (1,9,1);
PROCEDURE C_314A;
VAR BP_04:INTEGER;
BEGIN
IF RANDOM(10) = 0
THEN BEGIN
FOR BP_04 := 1 TO 3
DO BEGIN
GRAPHBACKGROUND(C_3144[BP_04]);
DELAY($12);
END;
GRAPHBACKGROUND(0);
END
ELSE BEGIN
DELAY($37);
END;
END;
CONST
FQ_A_0 = $0041;
FQ_C_0 = $004D;
FQ_D_0 = $0057;
FQ_Ds0 = $005C;
FQ_E_0 = $0061;
FQ_F_0 = $0067;
FQ_G_0 = $0074;
FQ_A_1 = $0082;
FQ_B_1 = $0092;
FQ_C_1 = $009B;
FQ_D_1 = $00AE;
FQ_E_1 = $00C3;
FQ_F_1 = $00CF;
FQ_G_1 = $00E9;
FQ_A_2 = $0105;
CONST C_31AA:ARRAY[1..$8B] OF INTEGER = (
FQ_A_0,FQ_E_0,FQ_G_0,FQ_E_0,FQ_A_0,FQ_E_0,FQ_G_0,FQ_E_0,
FQ_C_0,FQ_G_0,FQ_A_1,FQ_G_0,FQ_C_0,FQ_G_0,FQ_A_1,FQ_G_0,
FQ_D_0,FQ_G_0,FQ_C_1,FQ_G_0,FQ_D_0,FQ_G_0,FQ_C_1,FQ_G_0,
FQ_D_0,FQ_G_0,FQ_B_1,FQ_G_0,FQ_D_0,FQ_G_0,FQ_B_1,FQ_G_0,
FQ_A_0,FQ_E_0,FQ_G_0,FQ_E_0,FQ_A_0,FQ_E_0,FQ_G_0,FQ_E_0,
FQ_C_0,FQ_G_0,FQ_A_1,FQ_G_0,FQ_C_0,FQ_G_0,FQ_A_1,FQ_G_0,
FQ_D_0,FQ_G_0,FQ_C_1,FQ_G_0,FQ_D_0,FQ_G_0,FQ_C_1,FQ_G_0,
FQ_D_0,FQ_G_0,FQ_B_1,FQ_G_0,FQ_D_0,FQ_G_0,FQ_B_1,FQ_G_0,
FQ_E_0,FQ_A_1,FQ_E_1,FQ_A_1,FQ_E_0,FQ_A_1,FQ_E_1,FQ_A_1,
FQ_A_1,FQ_E_1,FQ_A_2,FQ_E_1,FQ_A_1,FQ_E_1,FQ_A_2,FQ_E_1,
FQ_G_0,FQ_D_1,FQ_G_1,FQ_D_1,FQ_G_0,FQ_D_1,FQ_G_1,FQ_D_1,
FQ_F_0,FQ_C_1,FQ_F_1,FQ_C_1,FQ_F_0,FQ_C_1,FQ_F_1,FQ_C_1,
FQ_E_0,FQ_A_1,FQ_E_1,FQ_A_1,FQ_E_0,FQ_A_1,FQ_E_1,FQ_A_1,
FQ_A_1,FQ_E_1,FQ_A_2,FQ_E_1,FQ_A_1,FQ_E_1,FQ_A_2,FQ_E_1,
FQ_G_0,FQ_D_1,FQ_G_1,FQ_D_1,FQ_G_0,FQ_D_1,FQ_G_1,FQ_D_1,
FQ_F_0,FQ_C_1,FQ_F_1,FQ_C_1,FQ_F_0,FQ_C_1,FQ_F_1,FQ_C_1,
FQ_E_0,FQ_G_0,FQ_A_1,FQ_G_0,FQ_E_0,FQ_C_0,FQ_D_0,FQ_Ds0,
FQ_E_0,FQ_D_0,FQ_C_0
);
PROCEDURE C_32C0;
BEGIN
SOUND(C_31AA[D_0BBE] SHL 3);
DELAY($37);
SOUND(C_31AA[D_0BBE] SHL 1);
DELAY($37);
IF(D_0BBE < $8B)
THEN D_0BBE := D_0BBE + 1
ELSE D_0BBE := 1;
NOSOUND;
END;
PROCEDURE C_3320;
CONST
C_3327:ARRAY[1..8] OF STRING[19] = (
' ubi soft presente',
'un jeu realise par',
' eric doireau ',
' c. le scoarnec ',
' avec l"aide de ',
' y t g ',
' xavier talgorn ',
'christophe bouchon'
);
C_33C7:ARRAY[1..3] OF BYTE = (1,2,3);
VAR
BP_04:STRING[1];
BP_05, BP_06:BYTE;
BEGIN
D_0BBE := 1;
FOR BP_05 := 1 TO 8
DO BEGIN
FOR BP_06 := 1 TO 3
DO BEGIN
C_32C0;
C_30F7(C_33C7[BP_06]);
C_2E84($0B, $19);
C_2FED(C_3327[BP_05]);
DELAY($28);
END;
FOR BP_06 := 1 TO 10
DO BEGIN
C_32C0;
C_314A;
END;
FOR BP_06 := 1 TO 3
DO BEGIN
C_32C0;
C_30F7(C_33C7[BP_06]);
C_2E84($0B, $19);
C_2FED(C_3327[BP_05]);
DELAY($28);
END;
C_32C0;
C_314A;
END;
C_32C0;
DELAY($2D);
C_30D0(0);
TEXTCOLOR(0);
TEXTBACKGROUND(0);
C_2E84($0B, $19);
C_2F4C;
WHILE NOT KEYPRESSED
DO BEGIN
C_32C0;
C_314A;
C_32C0;
DELAY($37);
END;
READ(KBD, BP_04);
END;
CONST C_352A:STRING[30] = 'jouez-vous sur un amstrad pc ?';
PROCEDURE C_3549;
BEGIN
C_30C0(0);
C_30D0(0);
REPEAT
ASSIGN(D_0B72, 'IM1.SCR');
RESET(D_0B72);
UNTIL IORESULT = 0;
C_311E;
BLOCKREAD(D_0B72, C_2831, 128);
CLOSE(D_0B72);
C_30D0(0);
C_30F7(3);
C_3320;
END;
BEGIN
IF(NOT C_2835)
THEN BEGIN
END
ELSE BEGIN
GRAPHCOLORMODE;
D_02B0 := TRUE;
D_028B := 1;
PALETTE(D_028B);
C_2E63;
D_028A := 0;
GRAPHBACKGROUND(D_028A);
{-------------------}
{-- check mouse ? --}
{-------------------}
D_0266.AX := 0;
INTR($33, D_0266);
D_02AF := (D_0266.AX = $FFFF);
{-----}
{-- --}
{-----}
C_30D0(D_0286);
C_30F7(D_0288);
C_3549; {opening sequence}
D_0B6F := 0;
{----------------------}
{-- chain to MA1.CHN --}
{----------------------}
REPEAT
ASSIGN(D_0B72, 'MA1.CHN');
CHAIN(D_0B72);
UNTIL(IORESULT = 0);
END;
END.


)
Commentaire