-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGAMEMANAGER.X68
322 lines (269 loc) · 6.33 KB
/
GAMEMANAGER.X68
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
*-----------------------------------------------------------
* Title :
* Written by :
* Date :
* Description:
*-----------------------------------------------------------
LOAD_SAVE:
;CARGA LA PARTIDA GUARDADA, SI EXISTE
MOVEM.L D0-D1, -(SP)
MOVE.B #2, (FIXFILEBUG)
.RETRY:
SUBQ.B #1, (FIXFILEBUG)
MOVE.L #SAVEFPTH, -(SP)
JSR OPEN_READ
MOVE.L (SP)+, D0
TST.L D0
BMI .DEFAULT_SAVE ;RECUERDA, BMI=MInus, BNE=NotEqual
;LEER MAGIKN
MOVE.L D0, -(SP)
MOVE.L #IOFILEW, -(SP)
MOVE.W #2, -(SP)
JSR READ_FILE ;BUG SI MUSIC SERVER
MOVE.W (SP)+, D1
TST.W D1
BEQ .NOERR
.ERR:
;ERROR LECTURA
ADDQ.L #4, SP
JSR CLOSEFILE
ADDQ.L #4, SP
;TST.B (HASBGMSRV) ni idea de por que pasa.....
TST.B (FIXFILEBUG)
BPL .RETRY ;saquen Easy68K 6.0
BRA .DEFAULT_SAVE
.NOERR:
MOVE.B #-1, (FIXFILEBUG)
MOVE.W (IOFILEW), D1
CMP.W #MAGIKN, D1
BNE .ERR
;LEER PARTIDA GUARDADA
MOVE.L #GAMEDATA, (SP)
MOVE.W #GAMEDATASIZE, -(SP)
JSR READ_FILE
MOVE.W (SP)+, D1
TST.W D1
BNE .ERR
ADDQ.L #4, SP
JSR CLOSEFILE
ADDQ.L #4, SP
BRA .END
.DEFAULT_SAVE:
MOVE.W #0, (PLOTID)
MOVE.W #1, (SAVEMAPID)
MOVE.W #-1, (SPAWNX) ;TODO
MOVE.W #-1, (SPAWNY) ;TODO
MOVE.W #5, (PACTHP)
MOVE.W #10, (PMAXHP)
MOVE.W #$0100, (ARMS_STS+0)
MOVE.W #0, (INVI_STS)
MOVE.B #0, (EQUIPARM)
.END:
MOVEM.L (SP)+, D1-D0
RTS
GAME_SAVE:
MOVEM.L D0-D1/A0, -(SP)
;GUARDA VALORES EN GAMEDATA
MOVE.L (PLAYERREF), A0
MOVE.W ET_HP(A0), PACTHP
MOVE.W (CURRENTMAPID), (SAVEMAPID)
;ABRE ARCHIVO PARTIDA GUARDADA
;O LO CREA
MOVE.L #SAVEFPTH, -(SP)
JSR OPEN_WRITE
MOVE.L (SP)+, D0
TST.L D0
BMI .ERR
;ESCRIBIR MAGIKN
MOVE.L D0, -(SP)
MOVE.W #MAGIKN, (IOFILEW)
MOVE.L #IOFILEW, -(SP)
MOVE.W #2, -(SP)
JSR WRITE_FILE
MOVE.W (SP)+, D1
TST.W D1
BNE .ERR
MOVE.L #GAMEDATA, (SP)
MOVE.W #GAMEDATASIZE, -(SP)
JSR WRITE_FILE
MOVE.W (SP)+, D1
TST.W D1
BNE .ERR
BRA .CLOSE
.ERR:
;ILLEGAL
.CLOSE:
ADDQ.L #4, SP
JSR CLOSEFILE
ADDQ.L #4, SP
MOVEM.L (SP)+, A0/D1-D0
RTS
LOAD_MAP:
; (SP).W ET_ID MAP
MOVE.W 4(SP), (LOAD_MAP_ID)
MOVE.B #1, (LOAD_MAP_ST)
BSET.B #7, (GAMEFLAGS)
IFNE FLG_TRANS
;ACTIVAR TRANS
MOVE.B #1, (TRANS_STATUS)
ENDC
IFEQ FLG_TRANS
BSR DO_LOAD_MAP
ENDC
RTS
DO_LOAD_MAP:
; EJECUTA LA CARGA DEL SIGUIENTE MAPA POR PILA
; 16(SP).W ET_ID MAP
MOVEM.L D0-D1/A0, -(SP)
MOVE.W #-1, (CURRENTTXTID) ;QUITA DBOX
BCLR.B #7, (GAMEFLAGS)
CLR.B (LOAD_MAP_ST)
;GUARDAR VALORES PLAYER
MOVE.L (PLAYERREF), A0
CMP.L #0, A0
BMI .NOPREF
MOVE.W ET_HP(A0), (PACTHP)
.NOPREF:
JSR SLASHKILLA
;ELIMINAR REFERENCIA JUGADOR
MOVE.L #-1, (PLAYERREF)
MOVE.W (LOAD_MAP_ID), D0
MOVE.W D0, (CURRENTMAPID)
LEA MAPS, A0
ASL.W #2, D0 ;MULU #4
MOVE.L (A0, D0), (CURRENTMAPDIR)
BSR GENERATE_COLIMAP
;MUSICA
LEA BGMMUS, A0
ASR.W #2, D0
CLR.L D1
MOVE.B (A0, D0), D1
MOVE.W D1, -(SP)
JSR SEND_BGM
ADDQ.L #2, SP
ASL.W #2, D0
LEA ENTINSTDATA, A0 ;CARGAR ENTIDADES A
MOVE.L (A0, D0.W), A0 ;INSTANCIAR
CLR.L D1 ;MAS DE DOS HORAS CON TRACE PARA SABER QUE FALLABA ESTO, CAGONTO
;MUESTRA HUD, ANTES DE ENTIDAD POR SI DESABILITAN
BCLR.B #4, (GAMEFLAGS)
.INSTMLOOP:
MOVE.W (A0)+, D0
MOVE.W D0, D1
CMP.W #-1, D0
BEQ .ENDINSTS
.ILOOP:
MOVE.W (A0)+, -(SP)
DBRA D0, .ILOOP
JSR INSTANCE_ENTITY
ADDQ.W #1, D1
LSL.W #1, D1
ADD.L D1, SP
BRA .INSTMLOOP
.ENDINSTS:
MOVEM.L (SP)+, A0/D1-D0
RTS
GM_UPDATE:
CMP.B #1, (LOAD_MAP_ST)
BNE .NOLMAP
CMP.B #2, (TRANS_STATUS)
BNE .NOLMAP
MOVE.B #3, (TRANS_STATUS)
CLR.B (LOAD_MAP_ST)
BSR DO_LOAD_MAP
.NOLMAP:
TST.B (PLYERDED)
BEQ .ALIVE
;JUGADOR MUERTO
SUB.B #1, (WAITDED)
BPL .WAIT
;FIN ESPERA MUERTE
CLR.B (WAITDED)
BSET.B #7, (GAMEFLAGS)
CMP.W #-1, (CURRENTTXTID)
BNE .ALIVE
;MUESTRA MENSAJE MUERTE
MOVE.W #1, -(SP)
BSR START_DBOX
ADDQ.W #2, SP
BRA .ALIVE
.WAIT: ;LO DEJO POR SI ACASO...
.ALIVE:
RTS
GM_UPD_BLTXP:
MOVEM.L D0-D3/A0, -(SP)
; (SP).W XP A ACTUALIZAR
; SOBRE ARMA ACTUAL
MOVE.W 24(SP), D0
;OBTENER XP, ARMA ACTUAL
LEA ARMS_STS, A0
CLR.L D1 ;ET_ID ARMA
CLR.L D2 ;XP
CLR.L D3 ;LVL
MOVE.B (EQUIPARM), D1
MOVE.B D1, D3
MOVE.W (A0, D1), D3
MOVE.B D3, D2
LSR.W #8, D3
;TODO DIFERENTES XP PARA SUBIR DE NIVEL
;AHORA SOLO SUMAR XP CAP 20 -> LVL UP
ADD.W D0, D2
BLT .LVLDOWN
CMP.W #20, D2
BLT .NOLVLUP
;SUBIR DE NIVEL, XP=0, LVL++ CAP.3
CMP.W #3, D3
BLT .NOMAXLVL
;MOVE.W #3, D3
MOVE.W #20, D2
BRA .END
.NOMAXLVL:
ADDQ.W #1, D3
CLR.L D2
.NOLVLUP:
BRA .END
.LVLDOWN:
SUBQ.W #1, D3
CMP.W #1, D3
BGE .NOLVLZ
MOVE.W #1, D3
CLR.W D2
BRA .END
.NOLVLZ:
ADD.W #20, D2
.END:
MOVE.B D2, 1(A0, D1)
MOVE.B D3, (A0, D1)
MOVEM.L (SP)+, A0/D3-D0
RTS
GM_PLYRDED:
MOVE.B #1, (PLYERDED)
MOVE.B #WAITDEDT, (WAITDED)
JSR STOP_BGM
RTS
PLAYERREF DS.L 1
PLYERDED DC.B 0
WAITDED DC.B 0
LOAD_MAP_ST DC.B 0 ;0: NADA, 1: ESPERA TRANS
DS.W 0
LOAD_MAP_ID DC.W 0 ;ET_ID A CARGAR
CURRENTMAPID DS.W 1
SAVEFPTH DC.B 'SAVE.DAT',0
DS.W 0
GAMEDATA:
PLOTID: DS.W 1
SAVEMAPID: DS.W 1
SPAWNX: DS.W 1
SPAWNY: DS.W 1
PACTHP: DS.W 1
PMAXHP: DS.W 1
ARMS_STS: DCB.B 10,0 ;(NIVEL).B(XP).B * 10 ARMAS lvl=0 BLOCK
INVI_STS: DS.W 1
EQUIPARM: DS.B 1
DS.W 0
.ENDGAMEDATA:
GAMEDATASIZE EQU .ENDGAMEDATA-PLOTID
*~Font name~Courier New~
*~Font size~10~
*~Tab type~1~
*~Tab size~4~