ReC98/th04/main/hud/element_put.asm

75 lines
1.5 KiB
NASM
Raw Normal View History

HUD_HP_CAPTION_TRAM_Y = 8
HUD_HP_BAR_TRAM_Y = 9
public @HUD_HP_PUT$QI
@hud_hp_put$qi proc far
@@bar_colors = word ptr -10h
@@blank = word ptr -0Ah
@@bar_value = word ptr 6
push bp
mov bp, sp
sub sp, 10h
push si
mov si, [bp+@@bar_value]
mov ax, word ptr _gHUD_HP_BLANK+0
mov word ptr [bp+@@blank], ax
mov ax, word ptr _gHUD_HP_BLANK+2
mov word ptr [bp+@@blank+2], ax
mov ax, word ptr _gHUD_HP_BLANK+4
mov word ptr [bp+@@blank+4], ax
mov ax, word ptr _gHUD_HP_BLANK+6
mov word ptr [bp+@@blank+6], ax
mov al, byte ptr _gHUD_HP_BLANK+8
mov byte ptr [bp+@@blank+8], al
mov ax, word ptr _HUD_HP_COLORS
mov word ptr [bp+@@bar_colors+0], ax
mov ax, word ptr _HUD_HP_COLORS+2
mov word ptr [bp+@@bar_colors+2], ax
mov al, byte ptr _HUD_HP_COLORS+4
mov byte ptr [bp+@@bar_colors+4], al
or si, si
jz short @@no_bar
call gaiji_putsa pascal, ((HUD_LEFT + 5) shl 16) + HUD_HP_CAPTION_TRAM_Y, ds, offset gsENEMY, TX_YELLOW
push HUD_HP_BAR_TRAM_Y
push si
mov ax, si
mov bx, (BAR_MAX / (HUD_HP_COLOR_COUNT - 1))
cwd
idiv bx
lea dx, [bp+@@bar_colors]
add ax, dx
mov bx, ax
mov al, ss:[bx]
mov ah, 0
push ax
if GAME eq 4
nop
endif
call hud_bar_put
jmp short @@ret
; ---------------------------------------------------------------------------
@@no_bar:
push ((HUD_LEFT + 5) shl 16) + HUD_HP_CAPTION_TRAM_Y
push ss
lea ax, [bp+@@blank][5]
push ax
push TX_WHITE
call gaiji_putsa
push (HUD_LEFT shl 16) + HUD_HP_BAR_TRAM_Y
push ss
lea ax, [bp+@@blank]
push ax
push TX_WHITE
call gaiji_putsa
@@ret:
pop si
leave
retf 2
@hud_hp_put$qi endp