GAMOPAT
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Papi Commando fait de ... L'assembleur 68000 !

+16
Hpman
ichigobankai
Urbinou
dub
grostonton
Spirale
vingazole
tetsuro
65c02
TotOOntHeMooN
F.L
tfdi
Ninja_SCX
vincent2105
pckid
drfloyd
20 participants

Page 8 sur 9 Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9  Suivant

Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Lun 4 Juil 2016 - 18:36

Mr. Green
C'est bien placé, donc faut pas se priver  Wink,et puis ce genre de troll,n'a jamais tué personne .

Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Lun 4 Juil 2016 - 18:38

Concernant :
Var : ds.b 8
Testé, ça ne fonctionne pas.
J'ai TOUT testé sauf la solution a la "mano".Wink
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par tfdi Lun 4 Juil 2016 - 18:40

Ben tu fais alors un truc genre:

Lea $ff0000,a0

Et ca devrait être bon ... Wink
tfdi
tfdi
Patient contaminé

Masculin Nombre de messages : 550
Age : 52
Date d'inscription : 19/10/2010

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Lun 4 Juil 2016 - 18:41

Si à la mano c'est pareil, faudra attendre que stef passe par là  saispas

EDIT: la solution de tfdi est pas mal, en plus d'être simple (rien à déclarer) .
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Lun 4 Juil 2016 - 18:44

Oui je sais quoi faire maintenant.
Et arrêter de troller avec vos 16 bits a la noix là ...rambo
Chacun sait que the Best c'est et ça restera l'Amstrad CPC.
D'ailleurs je reverai réaliser un jeu en Z80 sur ma machine de coeur ... Un Papi Commando version 8 bits CPC ... amoureux
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par vincent2105 Lun 4 Juil 2016 - 18:47

Vetea a écrit:
D'ailleurs je reverai réaliser un jeu en Z80 sur ma machine de coeur ... Un Papi Commando version 8 bits CPC ... amoureux
Ah on retrouve le vrai Vetea là, des projets plein la tête Wink
vincent2105
vincent2105
Patient incurable

Masculin Nombre de messages : 1381
Age : 44
Localisation : 82
Date d'inscription : 17/12/2013

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par TotOOntHeMooN Lun 4 Juil 2016 - 18:49

Vetea a écrit:D'ailleurs je reverai réaliser un jeu en Z80 sur ma machine de coeur ... Un Papi Commando version 8 bits CPC ... amoureux
Ba voila !  Cool
TotOOntHeMooN
TotOOntHeMooN
Docteur agrégé **
Docteur agrégé **

Masculin Nombre de messages : 18147
Age : 54
Localisation : Terre I
Date d'inscription : 18/04/2013

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Lun 4 Juil 2016 - 18:51

Oui mais je commence a peine le 68000 ... Hihi !
Le Z80 c'est différent ... Mais la MD possède un petit Z80 avec 8Ko de réservé ... De quoi s'entrainer un peu. Wink
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par vingazole Lun 4 Juil 2016 - 18:52

Si tu veux faire un Papi Commando sur CPC, tu ferais mieux de te mettre à l'électronique Wink
vingazole
vingazole
Infirmier

Masculin Nombre de messages : 4522
Age : 50
Localisation : Midian
Date d'inscription : 05/01/2012

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par tfdi Lun 4 Juil 2016 - 18:52

Vetea:Ne commençons pas à parler de "the Best" machine, ca va partir en vrille ... What a Face ... entre Touko et son A ... AM ... machin, toi et ton A ... AM .. bidule .. (tiens c'est pareil ?... Papi Commando fait de ... L'assembleur 68000 ! - Page 8 435303) ... ca va partir en sucette .. Wink

Quand tu maitriseras le 68k, tu pourras apprendre le Z80, c'est toujours plus simple d'aborder un assembleur quand t'en connais au moins déjà un ... Wink
tfdi
tfdi
Patient contaminé

Masculin Nombre de messages : 550
Age : 52
Date d'inscription : 19/10/2010

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Lun 4 Juil 2016 - 18:56

Pfff dés que tu parles Z80 (aka CPU qui sert à rien), t'as toute la clique (sms et consort )qui rapplique  rambo

tongue

Vetea:Ne commençons pas à parler de "the Best" machine, ca va partir en vrille ... Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Fresse ... entre Touko et son A ... AM ... machin, toi et ton A ... AM .. bidule .. (tiens c'est pareil ?... Papi Commando fait de ... L'assembleur 68000 ! - Page 8 435303) ... ca va partir en sucette .. Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Icon_wink
Mauvaise langue langue
Avec le ST même la boite est plus puissante que la machine  Cool . (bon c'est pas le topic pour troller là) .

EDIT: le doc tu devrais faire un petit ntp date sur ton serveur, parce que là il est à l'heure ousbèque . Mr. Green


Dernière édition par TOUKO le Lun 4 Juil 2016 - 19:01, édité 1 fois
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Lun 4 Juil 2016 - 19:01

@Vingazole : je bosse dans l'électronique. Wink

Le CPC, c'est mon amour d'enfance ... Alors que la première machine sur laquelle j'ai vraiment pratiqué ( pendant les congés de Noël 1985 ), ce fut le Macintosh de mon père ... amoureux
Ahhhh quel putain de pied de découvrir ce monstre sacré de Jobs à 13 ans !! J'vous dit pas le cri que j'ai poussé quand mon père m'avait fait la surprise.

avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par tfdi Lun 4 Juil 2016 - 19:33

TOUKO a écrit:EDIT: le doc tu devrais faire un petit ntp date sur ton serveur, parce que là il est à l'heure ousbèque . Mr. Green

Je me suis dit la même chose y a 2 jours ... MDR .. mais en fait ca vient du forum, il faut régler ton profil en UTC+2 .... Wink
tfdi
tfdi
Patient contaminé

Masculin Nombre de messages : 550
Age : 52
Date d'inscription : 19/10/2010

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Lun 4 Juil 2016 - 20:13

Oui en changeant de fuseau dans le profil ,on retrouve ses billes, mais bon le serveur(ou le forum) lui est pas sur le bon fuseau ..
Mais bon c'est bon je retrouve à nouveau une heure normale sur les posts  Mr. Green
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Hpman Lun 4 Juil 2016 - 20:54

tfdi a écrit:Oui c'est ça ... cherche pas.

Il faut alors taper en dur dans la Ram, en partant de $FF0000, et "réserver" manuellement chaque octet.

Bonjour le système de mer** .....

Ca ne concerne par contre que les variables dans lesquelles tu vas ecrire des données, pas les autres. Il vaut mieux que tu fasses alors une "table" de variables, genre :

var1 equ $ff0000 ; 2 octets
var2 equ $ff0002 ; 2 octets
buffer equ $ff0004  ; 8 octets
buffer equ $ff000c ; 2 octets

Attention aux adresses impaires !! .... les .W et les .L ne passeront pas, et t'auras un crash système avec une erreur de bus ...

Le truc bien chiant à gérer ...

Non c'est pas pire qu'autre chose si tu exploite bien l'asm.

Exemple sur AoF neo geo dont on a le source, tu as toutes les variables dans un fichier include work.inc (il appellent la ram CPU la work ram):
Code:
************************************************************************
*         *
* [[[ NOP ]]]  WORK AREA       *
*       *
************************************************************************



 COMMON WORK,,D

WORK_TOP:

;    *** buffer etc. (100000H) ***

COLOR_BUFFER_0 DS.B 2000H
COLOR_BUFFER DS.B 2000H

BACK1_BUFFER DS.B 1000H
BACK2_BUFFER DS.B 1000H
BACK3_BUFFER DS.B 1000H

SOUND_BUFFER DS.B 100H
CARD_BUFFER DS.B 100H
TEXT_BUFFER DS.B 200H
RANDOM_BUFFER DS.B 100H
SORT_WORK DS.B 100H
ORDER_BUFFER DS.B 128*2
VPOS_BUFFER DS.W 180H
BACK_VRAM DS.W 64*2
CAL_MESS DS.B 100H

 DS.B 1000H-(*-SOUND_BUFFER)



;    *** system area (108000H) ***



A5_WORK DS.B 16

REG_D0 DS.B 4
REG_D1 DS.B 4
REG_D2 DS.B 4
REG_D3 DS.B 4
REG_D4 DS.B 4
REG_D5 DS.B 4
REG_D6 DS.B 4
REG_D7 DS.B 4
REG_A0 DS.B 4
REG_A1 DS.B 4
REG_A2 DS.B 4
REG_A3 DS.B 4
REG_A4 DS.B 4
REG_A5 DS.B 4
REG_A6 DS.B 4
REG_A7 DS.B 4

REG_STACK DS.B 4*16


MAIN_STEP DS.W 1 game main step
MAIN_STEP_STORE DS.W 1 game main step store
SUB_STEP DS.W 1 game sub step
SUB_STEP_STORE DS.W 1 game sub step store
SUB_SUB_STEP DS.W 1 spear step

STOP_STEP DS.W 1 game stop mode step
STOP_SUB_STEP DS.W 1 stop mode sub step
 DS.W 1
LSPC_MODE_STORE DS.W 1 LSPC mode register output value
SOUND_CODE_W DS.W 1 send outer sound code

LSPC_TIMER1 DS.L 1
LSPC_TIMER2 DS.L 1
INT2_COUNT_BASE DS.W 1
INT2_COUNT DS.W 1
INT2_START DS.L 1
LSPC_MODE_STOP DS.W 1 LSPC mode register for pause


 DS.B 100H-(*-A5_WORK)


STOPPER DS.B 1 1/60 sec wait stopper
LSPC_BUSY DS.B 1 LSPC access flag
START_FLAG2 DS.B 1 game start flag
FIRST_START DS.B 1 game start time

SD_IN_POINT DS.B 1 sound code input pointer
SD_OUT_POINT DS.B 1 sound code output pointer

RANDOM_SEED DS.B 1 system randomlist seed
MAKE_RANDOM DS.B 1 random make pointer
READ_RANDOM DS.B 1 random read pointer

ERROR_LEVER DS.B 1 system lever off
SECOND_VALUE DS.B 1 1sec v-int count
TEMP_ORDER DS.B 1 use order buffer number
TEMP_SPG DS.B 1
SPG_MODE DS.B 1

MASTER_LWORK DS.B 8 step master LWORK No
HIT_JUDGE_COUNT DS.B 2

PG_NUMBER DS.B 16

PAUSE_DI DS.B 1 !=0 pause disable
SOUND_TEST_CODE DS.B 2

TEST_PALETTE DS.B 2
TEST_COLOR DS.B 2
TEST_PG DS.B 2
TEST_R DS.B 2
TEST_G DS.B 2
TEST_B DS.B 2
STC20 DS.B 3
STC21 DS.B 3


 DS.B 80H-(*-STOPPER)

RANDOM_COUNT DS.W 1 random make
MAIN_COUNT DS.L 1
INT1_COUNT DS.L 1

BGM_CODE DS.W 1 playing BGM code keep

COLOR_STATE DS.W 1
COLOR_FLAG DS.W 1
COLOR_TIMER DS.W 1

PAUSE_BUFFER DS.W 5


 DS.B 80H-(*-RANDOM_COUNT)

;
;    *** for sprite display ***
;

BACK_INFO DS.L 1
PAL_IND_INFO DS.L 1 nop tool infomation
PALETTE_INFO DS.L 1
OBJT_INFO DS.L 1

WINDOW_X DS.L 1
WINDOW_Y DS.L 1

OBJ_DIV_POINT DS.L 1


OBJ1_MAP DS.B 8
OBJ2_MAP DS.B 8
OBJ3_MAP DS.B 8
OBJ4_MAP DS.B 8

OBJ_START EQU 0
OBJ_SIZE EQU 2
OBJ_USE EQU 4
DB_TYPE EQU 6

TEMP_SPRITE DS.W 1
MAX_SPRITE DS.W 1
START_V_ADRS DS.W 1
START_V_VALUE DS.W 1
TEMP_BIG_X DS.W 1
TEMP_BIG_Y DS.W 1
TEMP_BIG_VALUE DS.W 1
TEMP_BIG_BIT DS.L 1
TEMP_PAL_COM DS.W 1
H_FLIP_FLAG DS.W 1
ERACE_CHARA DS.W 1
ERACE_16 DS.W 1
VPOS_POINT DS.L 1
CONV_TYPE DS.W 1
CONV_MARK DS.L 1
MASTER_PWORK DS.L 1
ACTION_STACK DS.L 1

TEMP_PAL_COM2 DS.W 1
TEMP_CONV_START DS.W 1
USE_COUNT DS.W 1
OBJ_MAP_POINT DS.L 1


   DS.B 100H-(*-BACK_INFO)

MESS_OUT_POINT DS.L 1
MESS_COM_MODE DS.L 1
MESS_DATA_POINT DS.W 1


 DS.B 400H-(*-A5_WORK)

;
;    *** game original work ***
;

AREA_No DS.W 1
ROUND_No DS.W 1
MAX_ROUND DS.W 1
STAGE_TIME DS.W 1
WIN_PLAYER DS.L 1
WINNER_ROUND DS.W 1

SELECT_PLAYER DS.W 1 <**************
SEL_TIMER DS.W 1 <**************
SEL_CURSOLE1 DS.W 1
SEL_CURSOLE2 DS.W 1

MIN_DISTANCE DS.W 1
TEMP_DISTANCE DS.W 1
TEMP_DISTANCE2 DS.W 1
ACT_CHECK_MODE DS.W 1

PLAYING_TYPE DS.W 1

PHASE DS.W 1 game phase
HOME_CREDIT DS.W 1
DISP_CREDIT DS.W 1 for credit disp
STORY_PLAYER DS.W 1 story mode player
STORY_STAGE DS.W 1 story mode stage No

LEVEL_ORG DS.W 1 original level
LEVEL_ADD DS.W 1 level addition
LEVEL_TEMP DS.W 1 temp level

INSERT_POS DS.W 1 insert ... DISPLAY POSITION
FLAME_POS DS.W 1
FLAME_TYPE DS.W 1
FLAME_COUNT DS.W 1
FLAME_END DS.W 1

BONUS_No DS.W 1
BONUS_HERO DS.W 1
KING_MUNE DS.W 1
OLD_VS DS.W 1
ROUND_DISP_No DS.W 1

ATTACK_MUL DS.W 1
BONUS_RANK DS.W 1
HAOH_USE DS.W 1
BONUS3_NORMA DS.W 1
BONUS3_USE DS.W 1

SCORE_LIFE DS.L 1
SCORE_TIME DS.L 1
SCORE_PER DS.L 1
SCORE_TOTAL DS.L 1
ST_TD_RANK DS.W 1
ST_TL_RANK DS.W 1
VS_TD_RANK DS.W 1
VS_TL_RANK DS.W 1
NAMING_PLAYER DS.L 1
ST_IN_RANK DS.W 1
VS_IN_RANK DS.W 1
NAME_NAME_POS DS.W 1
BACK2_ST_BIG DS.W 1
ST_DEMO_MESSP DS.W 1
SELC_MODE DS.W 1
HOW_SPA_No DS.W 1

 DS.B 700H-(*-A5_WORK)

LANGUAGE DS.B 1
NEXT_AREA_F DS.B 1
DEMO_OVER_FLAG DS.B 1
DRAW_FLAG DS.B 1
STAGE_END_FLAG DS.B 1
DEMO_FLAG DS.B 1
LP_MAIN_RUN DS.B 1
NON_CTRL DS.B 1
LANGUAGE_SD DS.B 1
MAKE_DEMO_CUT DS.B 1
STORY_LIFE DS.B 1
STORY_SPIRIT DS.B 1
IN_BONUS DS.B 1
BONUS_DI DS.B 1
BONUS_STATE_ON DS.B 1
BONUS_WIN DS.B 1
BONUS_TIMER DS.B 1
SLOW_CUT DS.B 1
HOW_TO_FLAG DS.B 1
ST_DEMO_ON DS.B 1
ST_BACK_FLAG DS.B 1
ST_DEMO_IN DS.B 1
TIME_UP_TIMER DS.B 1

 DS.B 800H-(*-A5_WORK)



;    *** backup area (108800H) ***

DEBUG_DIP1 DS.B 1
DEBUG_DIP2 DS.B 1
VERSION DS.W 1
COIN_COUNT DS.W 1 coin sound counter
DEMO_NUMBER DS.B 1
HOW_MESS_No DS.B 1
TODAY DS.L 1
HI_SCORE DS.L 1
RANK_TL_S DS.B 8*5
RANK_TD_S DS.B 8*5
RANK_TD_V DS.B 8*5
RANK_TL_V DS.B 8*5


 DS.B 800H-(*-DEBUG_DIP1)



;    *** logical & physical work (109000H) ***


PWORK_START:
PWORK10 DS.B 80H

LWORK_START:
LWORK11 DS.B 80H

 DS.B 100H*(96-1)


PLAYER1 EQU LWORK11+0000H
PLAYER2 EQU LWORK11+0100H
HERO1 EQU LWORK11+0200H
HERO2 EQU LWORK11+0300H
HERO1S EQU LWORK11+0400H
HERO2S EQU LWORK11+0500H
BACK1 EQU LWORK11+0600H
BACK2 EQU LWORK11+0700H
TEXT1 EQU LWORK11+0800H
TEXT2 EQU LWORK11+0900H
RESERV1 EQU LWORK11+0A00H
RESERV2 EQU LWORK11+0B00H
RESERV3 EQU LWORK11+0C00H
RESERV4 EQU LWORK11+0D00H
RESERV5 EQU LWORK11+0E00H
RESERV6 EQU LWORK11+0F00H
MLWORK1 EQU RESERV5
MLWORK2 EQU RESERV6


HERO1_OBJ_START EQU (10H+0)*100H
HERO2_OBJ_START EQU (10H+10H)*100H
FREE_OBJ_START EQU (10H+20H)*100H



;    *** flag buffer (10F000H) ***

BIT_FLAG DS.B 100H
BYTE_FLAG DS.B 100H


 DS.B 0F300H-(*-WORK_TOP)


;
;    *** NEO-GEO system work (10F300H) ***
;


SSP_END:       ;supervisor stack
 DS.B 900H
 DS.B 180H


SYS_WORK0:

; user read area

SYSTEM_MODE DS.W 1 system working mode
MVS_FLAG DS.B 1 consumer or M.V.S
COUNTRY_CODE DS.B 1

GAME_DIP DS.B 16

INPUT_1 DS.B 6 I/O input value for player 1

; +0 controller type 0=non connect
; 1=nomal controller
; 2=expander
; 3=marjang
; 4=key board
; +1 before 1/60 sec real value (positive)
; +2 real value (positive)
; +3 edge (positiove)
; +4 edge or auto repeat (8/60 sec)
; +5 key repeat timer

INPUT_2 DS.B 6 I/O input value for player 2
INPUT_3 DS.B 6 I/O input value for player 3
INPUT_4 DS.B 6 I/O input value for player 4

INPUT_S DS.B 2 start & select button

; +0 real value (positive)
; +1 edge (positiove)
; bit (N-1)*2 player N start
; but (N-1)*2+1 player N select


USER_REQUEST DS.B 1 request code for user by system

; 0 power on initialize
; 1 eye catch
; 2 demo,game

USER_MODE DS.B 1 user job mode

; 0 power on initialize or eye catch
; 1 demo
; 2 in game

CREDIT_DEC DS.L 1 credit decrement number P1-P4 (BCD)

START_FLAG DS.W 1 player addtioin request or answer flag

PLAYER_MODE DS.B 8 player condition

; 0 not start
; 1 in game
; 2 continue time
; 3 game over


MESS_POINT DS.L 1 message buffer pointer
MESS_BUSY DS.W 1 message buffer busy flag

CARD_COMMAND DS.B 1 IC card acces command
CARD_MODE DS.B 1 IC card command error job mode
CARD_ANSWER DS.W 1 IC card command answer back
CARD_START DS.L 1 IC card buffer start address
CARD_SIZE DS.W 1 IC card buffer size
CARD_FCB DS.W 1 IC card FCB
CARD_SUB DS.W 1 IC card file sub No

DATE_TIME DS.B 8 presnt date & time

SELECT_TIMER DS.W 1
 DS.W 1 START_TEST
 DS.W 1 COIN_LEVER

 DS.B 80H-(*-SYS_WORK0)


SYS_WORK1:

CREDIT DS.B 4
 DS.L 1 SWITCH_STORE
 DS.B 8 UNDER_CREDIT
 DS.W 1 COIN1_CRD_NOR
 DS.W 1 COIN2_CRD_NOR
 DS.W 1 COIN1_CRD_CNT
 DS.W 1 COIN2_CRD_CNT
 DS.B 1 SELECT_FREE
 DS.B 1 NON_LIMIT
 DS.W 1 SELECT_LIMIT
 DS.B 1 DEMO_SOUND
 DS.B 1
 DS.W 1 INIT_MARK
 DS.W 1 SR_STORE
 DS.L 1 VERSION_BASE
 DS.B 2*16 GD_STORE


 DS.B 80H-(*-SYS_WORK1)


SYS_WORK2:

POWER_ON_ID DS.B 8 power on id-code
SYS_INT1_TIMER DS.L 1 int 1 counter
SYS_STOPPER DS.B 1 system stopper
 DS.B 1 Z80_BANK

 DS.W 1 SYSTEM_MODE2
 DS.W 1 CARD_TIMER
 DS.L 1 CARD_START2
 DS.W 1 CARD_SIZE2
 DS.W 1 CARD_FCB2
 DS.W 1 CARD_SUB2
 DS.B 20 DIR_BUFFER
 DS.W 5 DIR_NUMBER
 DS.B 1 FIX_STORE_FLAG
 DS.B 1 LED_OFF
 DS.B 1 IN_TEST
 DS.B 1 INST_MODE
 DS.B 1 START_BUSY
 DS.B 1 BACKUP_MODE
 DS.L 1 INST_RAD
 DS.B 1 INST_RCO
 DS.B 1 TITLE_MODE

MESS_STACK DS.L 5

 DS.B 1
 DS.B 1
INPUT_SS DS.B 2
 DS.B 2 INPUT_TT
 DS.B 1 KYOUSEI_MODE
 DS.B 1 SYS_STOP
 DS.B 1 CS_REMAIN
 DS.B 1 INT_OFF
 DS.W 1 INT1_TIMER2
 DS.B 1 MAJ_NOR
 DS.B 1
INPUT_5 DS.B 6
INPUT_6 DS.B 6

 DS.B 80H-(*-SYS_WORK2)


MESS_BUFFER DS.B 100H system message buffer

Ensuite l'astuce c'est de reserver un registre (A5) qui pointe sur A5_WORK judicieusement placé pile au milieu de la ram. Tu peux ensuite accéder à tout avec des BIDULE(A5).
La ram étant de 64Ko tout les deplacements sont en word et tu gagnes 4 cycles à chaque accès.
avatar
Hpman
Patient contaminé

Masculin Nombre de messages : 679
Age : 47
Localisation : Lille
Date d'inscription : 22/08/2014

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par tfdi Lun 4 Juil 2016 - 21:51

hpman:Oui évidemment, pas bien compliqué d'utiliser des labels dans un fichier, et de positionner un label pile au milieu des 64k pour rester sur un adressage en word et gagner 4 cycles, quand tu sais programmer en asm. Pas besoin de voir des sources pour penser à ça ... :)

Mais c'est pas le genre de chose auquel pensera un débutant, et c'est le style de truc qui rebutera encore plus un débutant, il n'y a qu'à voir le problème rencontré par Vetea.

Je disais que c'était chiant sous entendu quand tu débutes en asm, parce que justement quand tu débutes, ben tu n'exploites pas bien l'asm, c'est bien là la difficulté.
tfdi
tfdi
Patient contaminé

Masculin Nombre de messages : 550
Age : 52
Date d'inscription : 19/10/2010

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Lun 4 Juil 2016 - 22:33

Tfdi a bien résumé ...
Je débute !


Alors mettez vous à la place d'un mec qui débute de ZERO avant toute chose. Merci.
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Lun 4 Juil 2016 - 22:47

Bon, à peine arrivé chez moi, j'ai voulu tester direct les pistes soulevées durant nos discussions de l'après midi ...

CA MARCHE !! cheers cheers cheers cheers

Dans le fichier Variables.ASM ou je déclare mes variables principales, j'ai donc mise en place ma variable Buffer :

Code:
;************************************
;*** Variables globales du projet ***
;************************************
Code:
VDPControlPort: equ $C00004
VDPData: equ $C00000
WriteVDPTile: equ $40000000
WritePlaneA:  equ $40000003
AdresseVRAM: equ $20
Buffer: equ $FF0000

J'ai pris l'adresse de début $FF0000 ( à la base, c'est une type LONG sur 32 bits. )

Et ensuite, je lui associe un registre d'adresse a0 ...
Code:
 ;Chaine Alpha : On va compter le nombre de caractères à l'écran ! Registre de donnée d5.
 lea Buffer,a0
 moveq #1,d1                       
 moveq #23,d3          
 moveq #1,d4 
 move.w #$0,d2 
 bsr WriteTextAlpha


Et après, on la routine principale :
Code:
;///// Routine d'écriture de chaine alphanumérique //////
WriteTextAlpha:
 move.l  #WritePlaneA,d0       
 lsl.w #6,d1                
 add.w  d3, d1             
 lsl.w #1,d1           
 swap    d1            
 add.l d1,d0           
 move.l d0,(a5)
 moveq #0,d1 
 
 conversion:
 addi.w #1,d1                ;On compte le nombre de digits.
 divu #10,d5                 ;On divise par 10
 swap d5                     ;On va récupérer l'essentiel.
 move.b d5,(a0)+             ;On le stocke dans la pile.
 clr.w d5                    ;On efface le résultat
 swap d5                     ;On récupère le résultat.
 bne.s conversion            ;On recommence jusqu'à la fin de la conversion.
 subi.b #1,d1                ;On décrémente de 1 notre compteur.
 Dec:
 move.b -(a0),d5             ;On récupère le résultat de notre pile.
 addi.b #16,d5               ;On associe d0 avec le Mapping VRAM ( Soit Contenu d5 + #16)
 add.w d2,d5                 ;On additionne son contenu avec d2, notre Mot de commande VDP.
 move.w d5,(a6)              ;On envoie le bazard au VDP
 dbra d1,Dec                 ;... Jusqu'à la fin de notre digit.
 Fini:
 rts


Et roule ma poule !! Very Happy
J'ai viré le "adda #8,a0" ainsi que le code d'origine pour un système "basique".
Mais merci de m'avoir fait découvrir un nouvel OPcode Tfdi ! Wink
J'imagine qu'avec "adda", on pourra faire des sauts dans un registre d'adresse pour déclarer des variables dans un tableau, ou un truc du genre.

Il me vient une autre question.
Je me retrouve dans mes deux routines d'écriture de texte, une "redondance" du code avec la routine de positionnement de Tile :
Code:
 move.l  #WritePlaneA,d0       
 lsl.w #6,d1                
 add.w  d3, d1             
 lsl.w #1,d1           
 swap    d1            
 add.l d1,d0           
 move.l d0,(a5)
 moveq #0,d1 

En Basic, on créer une procédure ou une fonction pour ce genre de chose ..
En ASM on peut aussi faire la même chose, mais cela a un cout en cycle ( l'appel BSR ou JSR puis le RTS ... )
Alors vaut il mieux réécrire ces même portions de code quitte à les recopier et rendre un code lourdingue, ou utiliser un système en mettant sous forme de "Procédure" ou "fonction" afin d'avoir un code plus lisible, clair et mieux construit ( ma philosophie personnellement ... )

Merci en tout cas de votre aide ! :)
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Hpman Mar 5 Juil 2016 - 0:36

Tout dépend de ton programme dans sa globalité, certaines optimisations dépendent du contexte.
Tu vas tourner une condition dans un sens ou l'autre selon le sens le plus souvent emprunté.

En ce qui concerne les fonctions, c'est bien plus pratique à maintenir, et à mois d'appeler l'affichage de texte beaucoup de fois à chaque frame ça ne devrais pas changer grand chose globalement.
De toutes façons si tu veux vraiment optimiser une routine d'affichage de score, tu calcules pas l'adresse, vu que tu sais ou tu vas l'afficher.

Sinon en calculant comme ça:
Code:
lsl.w #7, d1
add.w d3, d1
add.w d3, d1
Tu gagnes 2 cycles. C'est Byzance Mr. Green
avatar
Hpman
Patient contaminé

Masculin Nombre de messages : 679
Age : 47
Localisation : Lille
Date d'inscription : 22/08/2014

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Stef Mar 5 Juil 2016 - 1:22

Je passe rapidement pour tenter de répondre au soucis rencontré sur la déclaration des variables...
En fait normalement il faut déclarer les sections dans lesquelles tu travailles à ton assembleur.
Si tu utilises directement les adresses absolues comme 0xFF0000, 0xFF0002... ça signifie que tu devras gérer toute ton allocation RAM de cette manière (et impossible à mixer avec du code C donc full asm obligé).
Normalement une manière plus élégante c'est de définir le memory map avec des sections .rodata (read only data = rom), .bss (uninitialized data = ram), .data (initialized data = ram)
Si tu veux mettre tes variables en ram tu mets donc :

Code:
section .bss

var_byte   db  0
var_word   dw 0
...

et ensuite

Code:
section .rodata

    lea var_word, a0
    ....
pour ton code..

Le truc c'est que j'ai aucune idée de comment ton assembleur gère ça, où tu définis ton memory map (dans GCC il y a un fichier .ld pour ça)... peut être que tu n'as pas le choix et doit directement référencé en absolue tes variables mais ça me parait pas génial :-/
Stef
Stef
Interne
Interne

Masculin Nombre de messages : 5087
Age : 45
Localisation : Sevres
Date d'inscription : 04/04/2007

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Mar 5 Juil 2016 - 1:31

Merci Stef.
Pas de soucis, pour ce que j'ai a faire, ça va aller.
Je vais développer un utilitaire pour ça, ça va le faire.
Je sais quoi faire maintenant. Very Happy
A bientôt.
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par tfdi Mar 5 Juil 2016 - 8:18

Stef:Je suis aussi sceptique sur le fait qu'on ne puisse pas "simplement" déclarer la section bss pour que l'asm le prenne directement en charge.

Vetea: thumleft

Sinon pour info, t'utilise quoi pour compiler ton code asm et le passer en .bin, je ne me souviens pas ?
tfdi
tfdi
Patient contaminé

Masculin Nombre de messages : 550
Age : 52
Date d'inscription : 19/10/2010

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Mar 5 Juil 2016 - 8:40

Pour compiler le code, j'utilise : ASM68K
Super simple à utiliser ! Pour créer un .Bin -> Asm68K Main.asm,Main.Bin Wink
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Mar 5 Juil 2016 - 9:18

Merci en tout cas de votre aide ! :)
Je te l'avais dit que c'était un bug merdeux  Wink

En Basic, on créer une procédure ou une fonction pour ce genre de chose ..
En ASM on peut aussi faire la même chose, mais cela a un cout en cycle ( l'appel BSR ou JSR puis le RTS ... )
Et tu crois que le basic il fait comment ??  Mr. Green 
Il utilise aussi du BSR/JSR !!

N'oublies pas que le basic,le C ou peu importe le langage de haut niveau, va te créer un fichier ASM d'abord, puis un bin .

Tu gagnes 2 cycles. C'est Byzance Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Icon_mrgreen
C'est clair   Very Happy
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Mar 5 Juil 2016 - 9:28

Merci Touko ! :)
Oui je me doute que cela se passe comme ça en "interne" maintenant que tout devient un peu plus clair ! Wink

Prochaine étape :
- Charger un/des Sprite(s) en VRAM.
- Le(s) déclarer au VDP.
- Le(s) afficher.
- Gérer leur déplacement avec un PAD.
- Gestion d'une boucle principale.
- Gestion des interruptions & Vblank/Hblank.

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 418468Papi Commando fait de ... L'assembleur 68000 ! - Page 8 418468Papi Commando fait de ... L'assembleur 68000 ! - Page 8 418468

Putain, si j'arrive à faire tout ça, j'aurai les premières bases pour réaliser un semblant de jeu en full ASM. Shocked Shocked
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Mar 5 Juil 2016 - 9:33

Bah oui ça vient, forcement BeX faisait le plus gros du job pour toi, là faut vraiment savoir comment marche la console, une fois que son archi est en tête ça ira bcp plus vite et surtout avec moins d'erreurs .

- Gestion des interruptions & Vblank/Hblank.
Sur Md pour commencer, oublies le hblank, c'est peu utile vu que la hscroll table est là pour ça .
le vblank c'est juste un bit à tester sur le reg de contrôle du VDP .
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Mar 5 Juil 2016 - 9:39

... et merci pour la petite optimisation :
 lsl.w #7, d1               
 add.w d3, d1
 add.w d3, d1




En effet, c'était tout con, mais il fallait y penser. Wink
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par tfdi Mar 5 Juil 2016 - 10:17

D'après les infos trouvées là :

http://birg.cs.wright.edu/ceg320/simulator/help_page.shtml


Code:
SECTIONS:
SECTION name,type
; Defines a relocatable section of code or data. 
  The type can be:  CODE
    DATA
    BSS ; uninitialized external data section
; The LINK.EXE program will generate a map file that shows were the
  sections are located in memory.
XDEF symbol1,symbol2,.......
; Defines symbols that can be used outside of the current section (global).
XREF symbol1,symobl2,......
; Allows the section to access the specified symbols that are defined
outside of the current section.



Le link.exe génère un map file pour la section bss, en indiquant ou va être situé cette section en mémoire, ça rejoint ce que disais Stef. Il faut regarder ce qu'il y a dans ce map file, et éventuellement le modifier ?
tfdi
tfdi
Patient contaminé

Masculin Nombre de messages : 550
Age : 52
Date d'inscription : 19/10/2010

Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Mar 5 Juil 2016 - 11:52

Et voila, j'ai crée un petit vaisseau spatial tout bête pour ma future démo de la mort qui tue ! Very Happy

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 AirSh1

Rien de bien folichon .. Un sprite de base et son ombre de 16x16.

J'utilise Sega Genesis Tile Designer, qui est une sorte de Paint Simplifié qui permet ensuite de sortir sous forme de Code les Assets ( divers langages sont supportés : C, Basic, Assembleur ... Top cool comme outil !! ). Je l'utilise très souvent. 
Je me demande même si, par la suite en ASM, je ne pourrai pas déduire l'ombre du sprite directement en faisant un masque ou une astuce du genre ... Bref, on verra ça en temps voulu ! scratch

C'est le genre de truc qui me fait avancer ... D'abord créer quelques assets, réfléchir à la manière tout en les créant, emmagasiner des idées et de l'énergie pour ensuite passer au code.
Un code sans assets c'est un peu comme regarder Maria Whittaker en doudoune quoi ... Quoique. Wink
 
Bon l'épreuve suivante, simple, charger les assets à la suite des Tileset de ma police principale. Je ne veux aucun gaspillage de ma VRAM, comme je le fais habituellement sous Bex.

A bientôt. Wink
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par Invité Mar 5 Juil 2016 - 13:15

J'ai trouvé ça, si ça peut t'aider:
http://www.mactech.com/articles/mactech/Vol.08/08.02/Efficient68000/index.html
avatar
Invité
Invité


Revenir en haut Aller en bas

Papi Commando fait de ... L'assembleur 68000 ! - Page 8 Empty Re: Papi Commando fait de ... L'assembleur 68000 !

Message par philip Mar 5 Juil 2016 - 17:29

Il est mignon ce petit vaisseau amoureux
(et bravo pour ton courage vetea avec l'assembleur !)
philip
philip
Docteur *
Docteur *

Masculin Nombre de messages : 2079
Age : 53
Localisation : 31350
Date d'inscription : 10/04/2011

http://philip-md.blogspot.fr/

Revenir en haut Aller en bas

Page 8 sur 9 Précédent  1, 2, 3, 4, 5, 6, 7, 8, 9  Suivant

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum