From 15466286584a86b4459b2d0a3211e18a870a5293 Mon Sep 17 00:00:00 2001 From: nmlgc Date: Sun, 31 Aug 2014 08:36:33 +0200 Subject: [PATCH] [Reduction] #399: grc_setclip --- libs/master.lib/grc_setclip.asm | 148 ++++++++++++++++++++++++++++++++ th01_zunsoft.asm | 87 +------------------ th02_main.asm | 104 +++------------------- th02_op.asm | 89 +------------------ th03_main.asm | 116 ++++--------------------- th04_main.asm | 87 +------------------ th05_main.asm | 87 +------------------ th05_maine.asm | 90 +------------------ 8 files changed, 186 insertions(+), 622 deletions(-) create mode 100644 libs/master.lib/grc_setclip.asm diff --git a/libs/master.lib/grc_setclip.asm b/libs/master.lib/grc_setclip.asm new file mode 100644 index 00000000..1cd29bda --- /dev/null +++ b/libs/master.lib/grc_setclip.asm @@ -0,0 +1,148 @@ +; graphics - clipping +; +; DESCRIPTION: +; 描画クリップ枠の設定処理 +; +; FUNCTION(in C): +; int far _pascal grc_setclip( int xl, int yt, int xr, int yb ) ; +; +; FUNCTION(in Pascal): +; function grc_setclip( xl,yt,xr,yb : integer ) : integer ; +; +; PARAMETERS: +; int xl 左端のx座標 +; int yt 上端のy座標 +; int xr 右端のx座標 +; int yb 下端のy座標 +; +; RETURNS: +; 0 = 失敗。実画面(640x400)の外にクリップ領域を設定しようとした +; 1 = 成功。 +; +; NOTES: +; ・入力は、まず画面枠(0,0)-(639,399)でクリップしている。 +; ・入力の対は、大小関係が逆でも揃えてから処理している。 +; +; GLOBAL VARIABLES: +; int ClipXL, ClipXW, ClipXR 左端x, 枠の横幅(xr-xl), 右端x +; int ClipYT, ClipYH, ClipYB 上端y, 枠の高さ(yb-yt), 下端y +; unsigned ClipYB_adr 下端の左端のVRAMオフセット +; unsigned ClipYT_seg 上端のVRAMセグメント(青プレーン) +; +; REFER: +; ・対応関数 +; grcg_polygon_convex() +; grcg_trapezoid() +; +; COMPILER/ASSEMBLER: +; TASM 3.0 +; OPTASM 1.6 +; +; AUTHOR: +; 恋塚昭彦 +; +; HISTORY: +; 92/5/20 Initial +; 92/6/5 _pascal化したが、バグ出た。ひー。直した。ぶう +; 92/6/5 ClipYB_adr追加。 +; 92/6/6 ClipYT_seg, GRamStart追加。 +; 92/6/16 データ部分をclip.asmに分離 +; 93/3/27 master.libに合併 +; 93/12/28 [M0.22] 横の制限はgraph_VramWidth*8ドットにした +; + +; int far _pascal grc_setclip( int xl, int yt, int xr, int yb ) ; +func GRC_SETCLIP + push BP + mov BP,SP + + ; 引数 + @@xl = (RETSIZE+4)*2 + @@yt = (RETSIZE+3)*2 + @@xr = (RETSIZE+2)*2 + @@yb = (RETSIZE+1)*2 + +;------------------------- X座標 + mov AX,[BP+@@xl] + mov BX,[BP+@@xr] + + test AX,BX ; AX < 0 && BX < 0 ならエラー + js short @@ERROR + + cmp AX,BX + jl short @@A + xchg AX,BX ; AX <= BXにする +@@A: + cmp AX,8000h ; + sbb DX,DX ; + and AX,DX ; AXが負数ならゼロにする + + mov CX,graph_VramWidth + shl CX,3 + dec CX + sub BX,CX ; + sbb DX,DX ; + and BX,DX ; + add BX,CX ; BXが639以上なら639にする + + sub BX,AX + jl short @@ERROR + + mov ClipXL,AX + mov ClipXW,BX + add AX,BX + mov ClipXR,AX + +;------------------------- Y座標 + + mov AX,[BP+@@yt] + mov BX,[BP+@@yb] + + test AX,BX ; AX < 0 && BX < 0 ならエラー + js short @@ERROR + + cmp AX,BX + jl short @@B + xchg AX,BX ; AX <= BXにする +@@B: + cmp AX,8000h ; + sbb DX,DX ; + and AX,DX ; AXが負数ならゼロにする + + mov CX,graph_VramLines + dec CX + sub BX,CX ; + sbb DX,DX ; + and BX,DX ; + add BX,CX ; BXが399以上なら399にする + + sub BX,AX + jl short @@ERROR + + mov ClipYT,AX + mov CX,AX + mov ClipYH,BX + add AX,BX + mov ClipYB,AX + + mov AX,graph_VramWidth + xchg AX,BX + mul BX + mov ClipYB_adr,AX ; 下端yの左端のVRAMオフセット + ; (ClipYT_segセグメント上) + + mov AX,BX + shr AX,4 + mul CX + add AX,graph_VramSeg ; 開始セグメント = graph_VramSeg + mov ClipYT_seg,AX ; + yt * graph_VramWidth/16 + + mov AX,1 + pop BP + ret 8 + +@@ERROR: + xor AX,AX + pop BP + ret 8 +endfunc diff --git a/th01_zunsoft.asm b/th01_zunsoft.asm index 6a66a261..434e2d0b 100644 --- a/th01_zunsoft.asm +++ b/th01_zunsoft.asm @@ -72,7 +72,7 @@ sub_384 proc near push 64h push 21Fh push 12Bh - call sub_139C + call grc_setclip call graph_hide push 21CEh call super_entry_bfnt @@ -937,90 +937,7 @@ loc_1398: retn sub_136A endp - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_139C proc near - -arg_0 = word ptr 4 -arg_2 = word ptr 6 -arg_4 = word ptr 8 -arg_6 = word ptr 0Ah - - push bp - mov bp, sp - mov ax, [bp+arg_6] - mov bx, [bp+arg_2] - test ax, bx - js short loc_1428 - cmp ax, bx - jl short loc_13AE - xchg ax, bx - -loc_13AE: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramWidth - shl cx, 3 - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_1428 - mov ClipXL, ax - mov ClipXW, bx - add ax, bx - mov ClipXR, ax - mov ax, [bp+arg_4] - mov bx, [bp+arg_0] - test ax, bx - js short loc_1428 - cmp ax, bx - jl short loc_13E4 - xchg ax, bx - -loc_13E4: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramLines - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_1428 - mov ClipYT, ax - mov cx, ax - mov ClipYH, bx - add ax, bx - mov ClipYB, ax - mov ax, graph_VramWidth - xchg ax, bx - mul bx - mov ClipYB_adr, ax - mov ax, bx - shr ax, 4 - mul cx - add ax, graph_VramSeg - mov ClipYT_seg, ax - mov ax, 1 - pop bp - retn 8 -; --------------------------------------------------------------------------- - -loc_1428: - xor ax, ax - pop bp - retn 8 -sub_139C endp - +include libs/master.lib/grc_setclip.asm include libs/master.lib/grcg_hline.asm include libs/master.lib/grcg_setcolor.asm include libs/master.lib/grcg_pset.asm diff --git a/th02_main.asm b/th02_main.asm index 53e274c3..1f44c14d 100644 --- a/th02_main.asm +++ b/th02_main.asm @@ -60,91 +60,7 @@ include libs/master.lib/grcg_byteboxfill_x.asm include libs/master.lib/grcg_circlefill.asm include libs/master.lib/grcg_circle.asm include libs/master.lib/grcg_circle_x.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_F1E proc far - ; sub_13671+A1P ... - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - mov ax, [bp+arg_6] - mov bx, [bp+arg_2] - test ax, bx - js short loc_FAA - cmp ax, bx - jl short loc_F30 - xchg ax, bx - -loc_F30: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramWidth - shl cx, 3 - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_FAA - mov ClipXL, ax - mov ClipXW, bx - add ax, bx - mov ClipXR, ax - mov ax, [bp+arg_4] - mov bx, [bp+arg_0] - test ax, bx - js short loc_FAA - cmp ax, bx - jl short loc_F66 - xchg ax, bx - -loc_F66: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramLines - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_FAA - mov ClipYT, ax - mov cx, ax - mov ClipYH, bx - add ax, bx - mov ClipYB, ax - mov ax, graph_VramWidth - xchg ax, bx - mul bx - mov ClipYB_adr, ax - mov ax, bx - shr ax, 4 - mul cx - add ax, graph_VramSeg - mov ClipYT_seg, ax - mov ax, 1 - pop bp - retf 8 -; --------------------------------------------------------------------------- - -loc_FAA: - xor ax, ax - pop bp - retf 8 -sub_F1E endp - +include libs/master.lib/grc_setclip.asm ; =============== S U B R O U T I N E ======================================= @@ -7467,7 +7383,7 @@ loc_B8B5: loc_B922: push large 0 push large 27F018Fh - call sub_F1E + call grc_setclip push large 0C0000Bh call grcg_setcolor mov dx, 0A6h ; '' @@ -23893,7 +23809,7 @@ var_2 = byte ptr -2 mov word_1ED94, 3E8h push large 200000h push large 1A0018Fh - call sub_F1E + call grc_setclip mov Palettes+42, 0E0h ; '' mov Palettes+43, 0C0h ; '' mov Palettes+44, 0B0h ; '' @@ -25022,7 +24938,7 @@ sub_140AE proc far jz short loc_140D4 push large 200000h push large 1A0018Fh - call sub_F1E + call grc_setclip mov byte_1EDA6, 0 mov word_1EB0A, 0FFFFh @@ -29893,7 +29809,7 @@ sub_1696B proc far call super_entry_bfnt push large 200000h push large 1A0018Fh - call sub_F1E + call grc_setclip call sub_134A0 mov word_20652, 0A0h ; '' mov word_20654, 0A0h ; '' @@ -35459,7 +35375,7 @@ sub_199B3 proc far call palette_white_out push large 200000h push large 1A0018Fh - call sub_F1E + call grc_setclip push large 0C00000h call grcg_setcolor call sub_FB0 @@ -35578,7 +35494,7 @@ sub_199B3 proc far call grcg_setcolor push large 1A00000h push large 27F018Fh - call sub_F1E + call grc_setclip mov dx, 0A6h ; '' mov al, byte_20619 out dx, al ; Interrupt Controller #2, 8259A @@ -35590,7 +35506,7 @@ sub_199B3 proc far call grcg_off push large 200000h push large 1A0018Fh - call sub_F1E + call grc_setclip mov word_26C6A, 0 xor si, si jmp short loc_19C0D @@ -36716,7 +36632,7 @@ sub_1A529 proc near push si push large 200010h push large 1A00140h - call sub_F1E + call grc_setclip push 9 call sub_FA52 add sp, 2 @@ -37000,7 +36916,7 @@ sub_1A7D5 proc far call grcg_off push large 200000h push large 1A0018Fh - call sub_F1E + call grc_setclip push word_26D76 push word_26D78 push word_2064E diff --git a/th02_op.asm b/th02_op.asm index ba870335..7e478b94 100644 --- a/th02_op.asm +++ b/th02_op.asm @@ -54,90 +54,7 @@ include libs/master.lib/file_write.asm include libs/master.lib/dos_close.asm include libs/master.lib/dos_ropen.asm include libs/master.lib/grcg_boxfill.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_AFE proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - mov ax, [bp+arg_6] - mov bx, [bp+arg_2] - test ax, bx - js short loc_B8A - cmp ax, bx - jl short loc_B10 - xchg ax, bx - -loc_B10: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramWidth - shl cx, 3 - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_B8A - mov ClipXL, ax - mov ClipXW, bx - add ax, bx - mov ClipXR, ax - mov ax, [bp+arg_4] - mov bx, [bp+arg_0] - test ax, bx - js short loc_B8A - cmp ax, bx - jl short loc_B46 - xchg ax, bx - -loc_B46: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramLines - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_B8A - mov ClipYT, ax - mov cx, ax - mov ClipYH, bx - add ax, bx - mov ClipYB, ax - mov ax, graph_VramWidth - xchg ax, bx - mul bx - mov ClipYB_adr, ax - mov ax, bx - shr ax, 4 - mul cx - add ax, graph_VramSeg - mov ClipYT_seg, ax - mov ax, 1 - pop bp - retf 8 -; --------------------------------------------------------------------------- - -loc_B8A: - xor ax, ax - pop bp - retf 8 -sub_AFE endp - +include libs/master.lib/grc_setclip.asm ; =============== S U B R O U T I N E ======================================= @@ -8156,7 +8073,7 @@ loc_B7B7: push 60h ; '`' push 200h push 130h - call sub_AFE + call grc_setclip push 0C0h ; '' push 0Ah call grcg_setcolor @@ -8215,7 +8132,7 @@ loc_B84F: push 0 push 27Fh push 18Fh - call sub_AFE + call grc_setclip pop si leave retf diff --git a/th03_main.asm b/th03_main.asm index 1f44b9f9..0771c02b 100644 --- a/th03_main.asm +++ b/th03_main.asm @@ -52,91 +52,7 @@ include libs/master.lib/dos_ropen.asm include libs/master.lib/grcg_boxfill.asm include libs/master.lib/grcg_circle.asm include libs/master.lib/grcg_circle_x.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_C40 proc far - ; sub_A21F+17P ... - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - mov ax, [bp+arg_6] - mov bx, [bp+arg_2] - test ax, bx - js short loc_CCC - cmp ax, bx - jl short loc_C52 - xchg ax, bx - -loc_C52: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramWidth - shl cx, 3 - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_CCC - mov ClipXL, ax - mov ClipXW, bx - add ax, bx - mov ClipXR, ax - mov ax, [bp+arg_4] - mov bx, [bp+arg_0] - test ax, bx - js short loc_CCC - cmp ax, bx - jl short loc_C88 - xchg ax, bx - -loc_C88: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramLines - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_CCC - mov ClipYT, ax - mov cx, ax - mov ClipYH, bx - add ax, bx - mov ClipYB, ax - mov ax, graph_VramWidth - xchg ax, bx - mul bx - mov ClipYB_adr, ax - mov ax, bx - shr ax, 4 - mul cx - add ax, graph_VramSeg - mov ClipYT_seg, ax - mov ax, 1 - pop bp - retf 8 -; --------------------------------------------------------------------------- - -loc_CCC: - xor ax, ax - pop bp - retf 8 -sub_C40 endp - +include libs/master.lib/grc_setclip.asm ; =============== S U B R O U T I N E ======================================= @@ -5411,7 +5327,7 @@ loc_9E24: call near ptr sub_BAE0 push large 0 push large 27F00C7h - call sub_C40 + call grc_setclip push 0 call sub_ECB2 pop di @@ -5793,7 +5709,7 @@ sub_A21F proc near call grcg_setcolor push large 0 push large 27F00C7h - call sub_C40 + call grc_setclip mov dx, 0A6h ; '' mov al, 1 out dx, al ; Interrupt Controller #2, 8259A @@ -7388,7 +7304,7 @@ sub_B4A8 proc near loc_B4E3: push large 80000h push large 26F00BFh - call sub_C40 + call grc_setclip sub word_1FBC4, 12h sub word_1FBCA, 17h add word_1FBCC, 12h @@ -7497,7 +7413,7 @@ loc_B5EE: call grcg_off push large 0 push large 27F00C7h - call sub_C40 + call grc_setclip pop si pop bp retn @@ -7526,7 +7442,7 @@ sub_B60A proc near loc_B645: push large 100000h push large 26F00BFh - call sub_C40 + call grc_setclip add word_1FBC6, 17h sub word_1FBC8, 12h sub word_1FBCE, 17h @@ -7613,7 +7529,7 @@ loc_B724: call grcg_off push large 0 push large 27F00C7h - call sub_C40 + call grc_setclip pop si pop bp retn @@ -10896,7 +10812,7 @@ loc_CF15: loc_CF1E: push 0BFh ; '' - call sub_C40 + call grc_setclip cmp byte ptr [si], 1 jnz short loc_CF42 push word ptr [si+2] @@ -11008,7 +10924,7 @@ loc_D013: out 7Ch, ax push large 0 push large 27F00C7h - call sub_C40 + call grc_setclip pop di pop si leave @@ -18439,7 +18355,7 @@ loc_10981: loc_1098A: push 0BFh ; '' - call sub_C40 + call grc_setclip call egc_off push large 0C0000Ah call grcg_setcolor @@ -18484,7 +18400,7 @@ loc_109FB: call egc_on push large 0 push large 27F00C7h - call sub_C40 + call grc_setclip loc_10A13: pop di @@ -28381,7 +28297,7 @@ loc_15A53: jnz short loc_15A77 push large 100008h push large 12F00BFh - call sub_C40 + call grc_setclip mov [bp+var_2], 10h jmp short loc_15A8D ; --------------------------------------------------------------------------- @@ -28389,7 +28305,7 @@ loc_15A53: loc_15A77: push large 1500008h push large 26F00BFh - call sub_C40 + call grc_setclip mov [bp+var_2], 150h loc_15A8D: @@ -28505,7 +28421,7 @@ loc_15B7E: loc_15B9A: push large 0 push large 27F00C7h - call sub_C40 + call grc_setclip call grcg_off mov al, [bp+var_F] shl al, 2 @@ -38627,7 +38543,7 @@ loc_1AA1B: loc_1AA24: push 0BFh ; '' - call sub_C40 + call grc_setclip mov bx, [bp+var_A] cmp byte ptr [bx+1], 10h ja loc_1AB7B @@ -38941,7 +38857,7 @@ loc_1ACCF: call egc_on push large 0 push large 27F00C7h - call sub_C40 + call grc_setclip sub di, 10h mov byte_1F2EA, 2 mov word_1F2E8, 8 diff --git a/th04_main.asm b/th04_main.asm index 0cdd6b80..28ec8050 100644 --- a/th04_main.asm +++ b/th04_main.asm @@ -69,90 +69,7 @@ include libs/master.lib/grcg_boxfill.asm include libs/master.lib/grcg_circlefill.asm include libs/master.lib/grcg_circle.asm include libs/master.lib/grcg_circle_x.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_144A proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - mov ax, [bp+arg_6] - mov bx, [bp+arg_2] - test ax, bx - js short loc_14D6 - cmp ax, bx - jl short loc_145C - xchg ax, bx - -loc_145C: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramWidth - shl cx, 3 - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_14D6 - mov ClipXL, ax - mov ClipXW, bx - add ax, bx - mov ClipXR, ax - mov ax, [bp+arg_4] - mov bx, [bp+arg_0] - test ax, bx - js short loc_14D6 - cmp ax, bx - jl short loc_1492 - xchg ax, bx - -loc_1492: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramLines - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_14D6 - mov ClipYT, ax - mov cx, ax - mov ClipYH, bx - add ax, bx - mov ClipYB, ax - mov ax, graph_VramWidth - xchg ax, bx - mul bx - mov ClipYB_adr, ax - mov ax, bx - shr ax, 4 - mul cx - add ax, graph_VramSeg - mov ClipYT_seg, ax - mov ax, 1 - pop bp - retf 8 -; --------------------------------------------------------------------------- - -loc_14D6: - xor ax, ax - pop bp - retf 8 -sub_144A endp - +include libs/master.lib/grc_setclip.asm include libs/master.lib/grcg_hline.asm ; =============== S U B R O U T I N E ======================================= @@ -20456,7 +20373,7 @@ sub_11ECB proc near mov byte_25592, 0Dh push large 200010h push large 19F017Fh - call sub_144A + call grc_setclip push 0B55Eh push 132h call sub_C34E diff --git a/th05_main.asm b/th05_main.asm index 2b5113a3..5c54c9cb 100644 --- a/th05_main.asm +++ b/th05_main.asm @@ -62,90 +62,7 @@ include libs/master.lib/grcg_byteboxfill_x.asm include libs/master.lib/grcg_circlefill.asm include libs/master.lib/grcg_circle.asm include libs/master.lib/grcg_circle_x.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_130C proc far - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - mov ax, [bp+arg_6] - mov bx, [bp+arg_2] - test ax, bx - js short loc_1398 - cmp ax, bx - jl short loc_131E - xchg ax, bx - -loc_131E: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramWidth - shl cx, 3 - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_1398 - mov ClipXL, ax - mov ClipXW, bx - add ax, bx - mov ClipXR, ax - mov ax, [bp+arg_4] - mov bx, [bp+arg_0] - test ax, bx - js short loc_1398 - cmp ax, bx - jl short loc_1354 - xchg ax, bx - -loc_1354: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramLines - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_1398 - mov ClipYT, ax - mov cx, ax - mov ClipYH, bx - add ax, bx - mov ClipYB, ax - mov ax, graph_VramWidth - xchg ax, bx - mul bx - mov ClipYB_adr, ax - mov ax, bx - shr ax, 4 - mul cx - add ax, graph_VramSeg - mov ClipYT_seg, ax - mov ax, 1 - pop bp - retf 8 -; --------------------------------------------------------------------------- - -loc_1398: - xor ax, ax - pop bp - retf 8 -sub_130C endp - +include libs/master.lib/grc_setclip.asm ; =============== S U B R O U T I N E ======================================= @@ -13705,7 +13622,7 @@ sub_EACE proc near mov byte_2C92C, 0Dh push large 200010h push large 19F017Fh - call sub_130C + call grc_setclip push 0BDF2h push 54h ; 'T' call sub_E708 diff --git a/th05_maine.asm b/th05_maine.asm index 5a3c676f..5d8324f0 100644 --- a/th05_maine.asm +++ b/th05_maine.asm @@ -62,91 +62,7 @@ include libs/master.lib/dos_ropen.asm include libs/master.lib/grcg_boxfill.asm include libs/master.lib/grcg_byteboxfill_x.asm include libs/master.lib/grcg_circlefill.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: bp-based frame - -sub_DCC proc far - ; sub_E41D+3D6P - -arg_0 = word ptr 6 -arg_2 = word ptr 8 -arg_4 = word ptr 0Ah -arg_6 = word ptr 0Ch - - push bp - mov bp, sp - mov ax, [bp+arg_6] - mov bx, [bp+arg_2] - test ax, bx - js short loc_E58 - cmp ax, bx - jl short loc_DDE - xchg ax, bx - -loc_DDE: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramWidth - shl cx, 3 - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_E58 - mov ClipXL, ax - mov ClipXW, bx - add ax, bx - mov ClipXR, ax - mov ax, [bp+arg_4] - mov bx, [bp+arg_0] - test ax, bx - js short loc_E58 - cmp ax, bx - jl short loc_E14 - xchg ax, bx - -loc_E14: - cmp ax, 8000h - sbb dx, dx - and ax, dx - mov cx, graph_VramLines - dec cx - sub bx, cx - sbb dx, dx - and bx, dx - add bx, cx - sub bx, ax - jl short loc_E58 - mov ClipYT, ax - mov cx, ax - mov ClipYH, bx - add ax, bx - mov ClipYB, ax - mov ax, graph_VramWidth - xchg ax, bx - mul bx - mov ClipYB_adr, ax - mov ax, bx - shr ax, 4 - mul cx - add ax, graph_VramSeg - mov ClipYT_seg, ax - mov ax, 1 - pop bp - retf 8 -; --------------------------------------------------------------------------- - -loc_E58: - xor ax, ax - pop bp - retf 8 -sub_DCC endp - +include libs/master.lib/grc_setclip.asm include libs/master.lib/grcg_hline.asm include libs/master.lib/grcg_pset.asm include libs/master.lib/grcg_setcolor.asm @@ -9803,7 +9719,7 @@ arg_6 = word ptr 0Ah add ax, word_151D8 add ax, 7 push ax - call sub_DCC + call grc_setclip pop bp retn 8 sub_D31F endp @@ -12316,7 +12232,7 @@ loc_E7CC: call super_free push large 0 push large 27F018Fh - call sub_DCC + call grc_setclip pop di pop si leave