~hangman8086-devs/hangman8086/trunk

« back to all changes in this revision

Viewing changes to scores.asm

  • Committer: Fabien LOISON
  • Date: 2011-06-19 13:48:14 UTC
  • Revision ID: flo@flogisoft.com-20110619134814-79tnefed7un4udem
* Two players competition mode implemented

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
;;     _new_sp_score(NSPS_NAME, NSPS_SCORE)  -- Insert the new score if
41
41
;;                                              necessary (single PLAYER
42
42
;;                                              mode).
 
43
;;     _new_tp_score(NTPS_NAME, NTPS_SCORE)  -- Insert the new score if
 
44
;;                                              necessary (two PLAYER
 
45
;;                                              mode).
43
46
;;
44
47
 
45
48
 
265
268
;; Usage:
266
269
;; mov NSPS_NAME, offset <playername>
267
270
;; mov NSPS_SCORE, <score>
268
 
;; call _scores
 
271
;; call _new_sp_score
269
272
 
270
273
;; Args:
271
274
NSPS_NAME  dw 0 ;Address of the player name
358
361
ret
359
362
 
360
363
 
 
364
 
 
365
;=================================== _new_tp_score(NTPS_NAME, NTPS_SCORE) ====
 
366
;; Insert the new score if necessary (two player mode).
 
367
 
 
368
;; Usage:
 
369
;; mov NTPS_NAME, offset <playername>
 
370
;; mov NTPS_SCORE, <score>
 
371
;; call _new_tp_score
 
372
 
 
373
;; Args:
 
374
NTPS_NAME  dw 0 ;Address of the player name
 
375
NTPS_SCORE dw 0 ;The score
 
376
 
 
377
 
 
378
_new_tp_score:
 
379
 
 
380
;Backup registers
 
381
push ax
 
382
push bx
 
383
push cx
 
384
push dx
 
385
 
 
386
;Check if the score is better than the best score
 
387
    mov ax, NTPS_SCORE
 
388
    cmp TP_SCORE_1S, ax
 
389
    jge ntps_1s_end
 
390
 
 
391
    mov ax, TP_SCORE_2S
 
392
    mov TP_SCORE_3S, ax
 
393
    mov MEMCPY_SRC, offset TP_SCORE_2N
 
394
    mov MEMCPY_DEST, offset TP_SCORE_3N
 
395
    mov MEMCPY_LEN, 8
 
396
    call _memcpy
 
397
 
 
398
    mov ax, TP_SCORE_1S
 
399
    mov TP_SCORE_2S, ax
 
400
    mov MEMCPY_SRC, offset TP_SCORE_1N
 
401
    mov MEMCPY_DEST, offset TP_SCORE_2N
 
402
    mov MEMCPY_LEN, 8
 
403
    call _memcpy
 
404
 
 
405
    mov ax, NTPS_SCORE
 
406
    mov TP_SCORE_1S, ax
 
407
    mov ax, NTPS_NAME
 
408
    mov MEMCPY_SRC, ax
 
409
    mov MEMCPY_DEST, offset TP_SCORE_1N
 
410
    mov MEMCPY_LEN, 8
 
411
    call _memcpy
 
412
 
 
413
    jmp ntps_end
 
414
    ntps_1s_end:
 
415
 
 
416
;Check if the score is better than the second score
 
417
    mov ax, NTPS_SCORE
 
418
    cmp TP_SCORE_2S, ax
 
419
    jge ntps_2s_end
 
420
 
 
421
    mov ax, TP_SCORE_2S
 
422
    mov TP_SCORE_3S, ax
 
423
    mov MEMCPY_SRC, offset TP_SCORE_2N
 
424
    mov MEMCPY_DEST, offset TP_SCORE_3N
 
425
    mov MEMCPY_LEN, 8
 
426
    call _memcpy
 
427
 
 
428
    mov ax, NTPS_SCORE
 
429
    mov TP_SCORE_2S, ax
 
430
    mov ax, NTPS_NAME
 
431
    mov MEMCPY_SRC, ax
 
432
    mov MEMCPY_DEST, offset TP_SCORE_2N
 
433
    mov MEMCPY_LEN, 8
 
434
    call _memcpy
 
435
 
 
436
    jmp ntps_end
 
437
    ntps_2s_end:
 
438
 
 
439
;Check if the score is better than the third score
 
440
    mov ax, NTPS_SCORE
 
441
    cmp TP_SCORE_3S, ax
 
442
    jge ntps_end
 
443
 
 
444
    mov ax, NTPS_SCORE
 
445
    mov TP_SCORE_3S, ax
 
446
    mov ax, NTPS_NAME
 
447
    mov MEMCPY_SRC, ax
 
448
    mov MEMCPY_DEST, offset TP_SCORE_3N
 
449
    mov MEMCPY_LEN, 8
 
450
    call _memcpy
 
451
 
 
452
 
 
453
ntps_end:
 
454
 
 
455
;Restore registers
 
456
pop dx
 
457
pop cx
 
458
pop bx
 
459
pop ax
 
460
 
 
461
ret
 
462
 
 
463