kopia lustrzana https://github.com/hoglet67/RGBtoHDMI
Fix issues with auto ntsc artifact detection with Tandy CoCo
rodzic
ad2fa8a287
commit
77d14491b4
|
@ -152,8 +152,8 @@ skip_psync_loop_no_old\@:
|
||||||
|
|
||||||
eor r9, r8, r8, lsr #3
|
eor r9, r8, r8, lsr #3
|
||||||
tst r9, #(0x05 << PIXEL_BASE)
|
tst r9, #(0x05 << PIXEL_BASE)
|
||||||
tsteq r9, #(0x05 << (PIXEL_BASE + 6))
|
tstne r9, #(0x05 << (PIXEL_BASE + 6))
|
||||||
biceq r3, r3, #BITDUP_LINE_CONDITION_DETECTED //detect if any U/V content
|
orreq r3, r3, #BITDUP_LINE_CONDITION_DETECTED //detect if any U/V content
|
||||||
|
|
||||||
and r9, r8, #(0x12 << PIXEL_BASE)
|
and r9, r8, #(0x12 << PIXEL_BASE)
|
||||||
and r14, r8, #(0x12 << (PIXEL_BASE + 6))
|
and r14, r8, #(0x12 << (PIXEL_BASE + 6))
|
||||||
|
@ -175,8 +175,8 @@ skip_psync_loop_no_old\@:
|
||||||
|
|
||||||
eor r9, r8, r8, lsr #3
|
eor r9, r8, r8, lsr #3
|
||||||
tst r9, #(0x05 << PIXEL_BASE)
|
tst r9, #(0x05 << PIXEL_BASE)
|
||||||
tsteq r9, #(0x05 << (PIXEL_BASE + 6))
|
tstne r9, #(0x05 << (PIXEL_BASE + 6))
|
||||||
biceq r3, r3, #BITDUP_LINE_CONDITION_DETECTED //detect if any U/V content
|
orreq r3, r3, #BITDUP_LINE_CONDITION_DETECTED //detect if any U/V content
|
||||||
|
|
||||||
and r9, r8, #(0x3f << PIXEL_BASE)
|
and r9, r8, #(0x3f << PIXEL_BASE)
|
||||||
and r14, r8, #(0x3f << (PIXEL_BASE + 6))
|
and r14, r8, #(0x3f << (PIXEL_BASE + 6))
|
||||||
|
@ -1211,15 +1211,7 @@ full_loop_8bpp_mono6_auto:
|
||||||
|
|
||||||
|
|
||||||
.align 6
|
.align 6
|
||||||
// *** 8 bit mono double auto ***
|
// *** 8 bit mono double ***
|
||||||
b preload_capture_line_ntsc_sixbits_double_8bpp_mono_auto
|
|
||||||
capture_line_ntsc_sixbits_double_8bpp_mono_auto:
|
|
||||||
orr r3, r3, #BITDUP_LINE_CONDITION_DETECTED //detecting UV non monochrome
|
|
||||||
b capture_line_ntsc_sixbits_double_8bpp_mono
|
|
||||||
preload_capture_line_ntsc_sixbits_double_8bpp_mono_auto:
|
|
||||||
orr r3, r3, #BITDUP_LINE_CONDITION_DETECTED //detecting UV non monochrome
|
|
||||||
// falls into
|
|
||||||
// *** 8 bit mono double***
|
|
||||||
b preload_capture_line_ntsc_sixbits_double_8bpp_mono
|
b preload_capture_line_ntsc_sixbits_double_8bpp_mono
|
||||||
capture_line_ntsc_sixbits_double_8bpp_mono:
|
capture_line_ntsc_sixbits_double_8bpp_mono:
|
||||||
push {lr}
|
push {lr}
|
||||||
|
@ -1233,6 +1225,93 @@ capture_line_ntsc_sixbits_double_8bpp_mono:
|
||||||
NTSC_CAPTURE_BITS_DOUBLE_8BPP_MONO_WIDE
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_MONO_WIDE
|
||||||
WAIT_FOR_PSYNC_EDGE_FAST
|
WAIT_FOR_PSYNC_EDGE_FAST
|
||||||
NTSC_CAPTURE_BITS_DOUBLE_8BPP_MONO_WIDE
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_MONO_WIDE
|
||||||
|
loop_8bppndm:
|
||||||
|
|
||||||
|
WAIT_FOR_PSYNC_EDGE // expects GPLEV0 in r4, result in r8
|
||||||
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_MONO_WIDE // input in r8
|
||||||
|
mov r11, r11, lsr #1
|
||||||
|
NTSC_DECODE r5
|
||||||
|
NTSC_DECODE_FINAL r5
|
||||||
|
mov r11, r11, lsl #1
|
||||||
|
WAIT_FOR_PSYNC_EDGE // expects GPLEV0 in r4, result in r8
|
||||||
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_MONO_WIDE // input in r8
|
||||||
|
mov r11, r11, lsr #1
|
||||||
|
NTSC_DECODE r6
|
||||||
|
NTSC_DECODE_FINAL r6
|
||||||
|
mov r11, r11, lsl #1
|
||||||
|
|
||||||
|
WRITE_R5_R6_IF_LAST
|
||||||
|
cmp r1, #1
|
||||||
|
bic r3, r3, #BITDUP_LINE_CONDITION_DETECTED
|
||||||
|
popeq {r0, pc}
|
||||||
|
|
||||||
|
WAIT_FOR_PSYNC_EDGE // expects GPLEV0 in r4, result in r8
|
||||||
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_MONO_WIDE // input in r8
|
||||||
|
mov r11, r11, lsr #1
|
||||||
|
NTSC_DECODE r7
|
||||||
|
NTSC_DECODE_FINAL r7
|
||||||
|
mov r11, r11, lsl #1
|
||||||
|
WAIT_FOR_PSYNC_EDGE // expects GPLEV0 in r4, result in r8
|
||||||
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_MONO_WIDE // input in r8
|
||||||
|
mov r11, r11, lsr #1
|
||||||
|
NTSC_DECODE r10
|
||||||
|
NTSC_DECODE_FINAL r10
|
||||||
|
mov r11, r11, lsl #1
|
||||||
|
|
||||||
|
WRITE_R5_R6_R7_R10
|
||||||
|
|
||||||
|
subs r1, r1, #2
|
||||||
|
bne loop_8bppndm
|
||||||
|
bic r3, r3, #BITDUP_LINE_CONDITION_DETECTED
|
||||||
|
pop {r0, pc}
|
||||||
|
|
||||||
|
preload_capture_line_ntsc_sixbits_double_8bpp_mono:
|
||||||
|
PRELOAD_BITCOUNT
|
||||||
|
SETUP_DUMMY_PARAMETERS
|
||||||
|
b capture_line_ntsc_sixbits_double_8bpp_mono
|
||||||
|
|
||||||
|
no_ntsc_sixbits_double_8bpp_mono:
|
||||||
|
SKIP_PSYNC_NO_OLD_CPLD_NTSC // returns with ntsc_status in r12
|
||||||
|
loop_8bppdm:
|
||||||
|
WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8
|
||||||
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_WIDE r11 r5 // input in r8
|
||||||
|
WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8
|
||||||
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_WIDE r11 r6 // input in r8
|
||||||
|
|
||||||
|
WRITE_R5_R6_IF_LAST
|
||||||
|
cmp r1, #1
|
||||||
|
bic r3, r3, #BITDUP_LINE_CONDITION_DETECTED
|
||||||
|
popeq {r0, pc}
|
||||||
|
|
||||||
|
WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8
|
||||||
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_WIDE r11 r7 // input in r8
|
||||||
|
WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8
|
||||||
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_WIDE r11 r10 // input in r8
|
||||||
|
|
||||||
|
WRITE_R5_R6_R7_R10
|
||||||
|
|
||||||
|
subs r1, r1, #2
|
||||||
|
bne loop_8bppdm
|
||||||
|
bic r3, r3, #BITDUP_LINE_CONDITION_DETECTED
|
||||||
|
pop {r0, pc}
|
||||||
|
|
||||||
|
.ltorg
|
||||||
|
|
||||||
|
.align 6
|
||||||
|
// *** 8 bit mono double auto ***
|
||||||
|
b preload_capture_line_ntsc_sixbits_double_8bpp_mono_auto
|
||||||
|
capture_line_ntsc_sixbits_double_8bpp_mono_auto:
|
||||||
|
push {lr}
|
||||||
|
ldr r12, =ntsc_status
|
||||||
|
ldr r12, [r12]
|
||||||
|
tst r12, #NTSC_ARTIFACT
|
||||||
|
beq no_ntsc_sixbits_double_8bpp_mono_auto
|
||||||
|
SKIP_PSYNC_NO_OLD_CPLD_NTSC // returns with ntsc_status in r12
|
||||||
|
mov r11, #0
|
||||||
|
WAIT_FOR_PSYNC_EDGE_FAST
|
||||||
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_MONO_WIDE
|
||||||
|
WAIT_FOR_PSYNC_EDGE_FAST
|
||||||
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_MONO_WIDE
|
||||||
loop_8bppnd_auto:
|
loop_8bppnd_auto:
|
||||||
|
|
||||||
WAIT_FOR_PSYNC_EDGE // expects GPLEV0 in r4, result in r8
|
WAIT_FOR_PSYNC_EDGE // expects GPLEV0 in r4, result in r8
|
||||||
|
@ -1269,17 +1348,16 @@ loop_8bppnd_auto:
|
||||||
|
|
||||||
subs r1, r1, #2
|
subs r1, r1, #2
|
||||||
bne loop_8bppnd_auto
|
bne loop_8bppnd_auto
|
||||||
|
|
||||||
pop {r0, pc}
|
pop {r0, pc}
|
||||||
|
|
||||||
preload_capture_line_ntsc_sixbits_double_8bpp_mono:
|
preload_capture_line_ntsc_sixbits_double_8bpp_mono_auto:
|
||||||
PRELOAD_BITCOUNT
|
PRELOAD_BITCOUNT
|
||||||
SETUP_DUMMY_PARAMETERS
|
SETUP_DUMMY_PARAMETERS
|
||||||
b capture_line_ntsc_sixbits_double_8bpp_mono
|
b capture_line_ntsc_sixbits_double_8bpp_mono_auto
|
||||||
|
|
||||||
no_ntsc_sixbits_double_8bpp_mono:
|
no_ntsc_sixbits_double_8bpp_mono_auto:
|
||||||
SKIP_PSYNC_NO_OLD_CPLD_NTSC // returns with ntsc_status in r12
|
SKIP_PSYNC_NO_OLD_CPLD_NTSC // returns with ntsc_status in r12
|
||||||
loop_8bppd:
|
loop_8bppd_auto:
|
||||||
WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8
|
WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8
|
||||||
NTSC_CAPTURE_BITS_DOUBLE_8BPP_WIDE r11 r5 // input in r8
|
NTSC_CAPTURE_BITS_DOUBLE_8BPP_WIDE r11 r5 // input in r8
|
||||||
WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8
|
WAIT_FOR_PSYNC_EDGE_FAST // expects GPLEV0 in r4, result in r8
|
||||||
|
@ -1297,8 +1375,7 @@ loop_8bppd:
|
||||||
WRITE_R5_R6_R7_R10
|
WRITE_R5_R6_R7_R10
|
||||||
|
|
||||||
subs r1, r1, #2
|
subs r1, r1, #2
|
||||||
bne loop_8bppd
|
bne loop_8bppd_auto
|
||||||
|
|
||||||
pop {r0, pc}
|
pop {r0, pc}
|
||||||
|
|
||||||
.ltorg
|
.ltorg
|
154
src/rgb_to_fb.S
154
src/rgb_to_fb.S
|
@ -93,73 +93,9 @@ rgb_to_fb:
|
||||||
|
|
||||||
push {r4-r12, lr}
|
push {r4-r12, lr}
|
||||||
|
|
||||||
// Save the capture_info_t parameters to absolute addresses
|
bl get_params
|
||||||
ldr r2, [r0, #O_FB_PITCH]
|
|
||||||
str r2, param_fb_pitch
|
|
||||||
ldr r2, [r0, #O_FB_WIDTH]
|
|
||||||
str r2, param_fb_width
|
|
||||||
ldr r2, [r0, #O_FB_HEIGHT]
|
|
||||||
str r2, param_fb_height
|
|
||||||
ldr r2, [r0, #O_FB_SIZEX2]
|
|
||||||
str r2, param_fb_sizex2
|
|
||||||
ldr r2, [r0, #O_FB_BPP]
|
|
||||||
str r2, param_fb_bpp
|
|
||||||
ldr r2, [r0, #O_CHARS_PER_LINE]
|
|
||||||
str r2, param_chars_per_line
|
|
||||||
ldr r2, [r0, #O_NLINES]
|
|
||||||
str r2, param_nlines
|
|
||||||
ldr r2, [r0, #O_H_OFFSET]
|
|
||||||
str r2, param_h_offset
|
|
||||||
ldr r2, [r0, #O_V_OFFSET]
|
|
||||||
str r2, param_v_offset
|
|
||||||
ldr r2, [r0, #O_NCAPTURE]
|
|
||||||
str r2, param_ncapture
|
|
||||||
ldr r2, [r0, #O_CAPTURE_LINE]
|
|
||||||
str r2, param_capture_line
|
|
||||||
ldr r2, [r0, #O_PALETTE_CONTROL]
|
|
||||||
str r2, param_palette_control
|
|
||||||
ldr r2, [r0, #O_SAMPLE_WIDTH]
|
|
||||||
str r2, param_sample_width
|
|
||||||
ldr r2, [r0, #O_H_ADJUST]
|
|
||||||
str r2, param_h_adjust
|
|
||||||
ldr r2, [r0, #O_V_ADJUST]
|
|
||||||
str r2, param_v_adjust
|
|
||||||
ldr r2, [r0, #O_SYNCTYPE]
|
|
||||||
str r2, param_sync_type
|
|
||||||
ldr r3, [r0, #O_DETSYNCTYPE]
|
|
||||||
str r3, param_detected_sync_type
|
|
||||||
ldr r2, [r0, #O_VSYNCTYPE]
|
|
||||||
str r2, param_vsync_type
|
|
||||||
ldr r2, [r0, #O_VIDEOTYPE]
|
|
||||||
str r2, param_video_type
|
|
||||||
bic r1, r1, #BIT_INTERLACED_VIDEO
|
|
||||||
cmp r2, #0 //VIDEO_PROGRESSIVE;
|
|
||||||
tstne r3, #SYNC_BIT_INTERLACED
|
|
||||||
orrne r1, r1, #BIT_INTERLACED_VIDEO
|
|
||||||
ldr r2, [r0, #O_NTSCPHASE]
|
|
||||||
str r2, param_ntscphase
|
|
||||||
ldr r2, [r0, #O_BORDER]
|
|
||||||
str r2, param_border
|
|
||||||
ldr r2, [r0, #O_DELAY]
|
|
||||||
str r2, param_delay
|
|
||||||
ldr r2, [r0, #O_INTENSITY]
|
|
||||||
and r2, r2, #0x0f
|
|
||||||
eor r2, r2, #0x0f
|
|
||||||
mov r2, r2, lsl #12
|
|
||||||
orr r2, r2, lsl #16
|
|
||||||
str r2, param_intensity
|
|
||||||
ldr r2, [r0, #O_AUTOSWITCH]
|
|
||||||
str r2, param_autoswitch
|
|
||||||
ldr r2, [r0, #O_TIMINGSET]
|
|
||||||
str r2, param_timingset
|
|
||||||
ldr r2, [r0, #O_FB_BASE]
|
|
||||||
str r2, param_framebuffer0
|
|
||||||
|
|
||||||
ldr r9, ntsc_status
|
|
||||||
and r9, #NTSC_ARTIFACT_REQUIRED // last detected burst state
|
|
||||||
ldr r8, param_ntscphase // 3 bits phase + 1 bit artifact on/off + 1 bit Y invert
|
|
||||||
orr r9, r9, r8
|
|
||||||
str r9, ntsc_status
|
|
||||||
|
|
||||||
// Sanity check chars_per_line <= fb_pitch
|
// Sanity check chars_per_line <= fb_pitch
|
||||||
ldr r3, param_fb_pitch
|
ldr r3, param_fb_pitch
|
||||||
|
@ -859,10 +795,10 @@ skip_all_lines:
|
||||||
cmp r9, #PALETTECONTROL_NTSCARTIFACT_BW_AUTO
|
cmp r9, #PALETTECONTROL_NTSCARTIFACT_BW_AUTO
|
||||||
bne check_dpms
|
bne check_dpms
|
||||||
|
|
||||||
ldr r8, param_fb_sizex2
|
ldr r6, param_fb_sizex2
|
||||||
tst r8, #SIZEX2_DOUBLE_WIDTH
|
tst r6, #SIZEX2_DOUBLE_WIDTH
|
||||||
moveq r8, #ARTIFACT_DETECTED_LINE_COUNT
|
moveq r8, #ARTIFACT_DETECTED_LINE_COUNT
|
||||||
movne r8, #(ARTIFACT_DETECTED_LINE_COUNT << 1)
|
movne r8, #1
|
||||||
|
|
||||||
ldr r9, ntsc_status
|
ldr r9, ntsc_status
|
||||||
mov r11, r9
|
mov r11, r9
|
||||||
|
@ -870,6 +806,9 @@ skip_all_lines:
|
||||||
bic r9, r9, #NTSC_ARTIFACT_REQUIRED
|
bic r9, r9, #NTSC_ARTIFACT_REQUIRED
|
||||||
orrge r9, r9, #NTSC_ARTIFACT_REQUIRED
|
orrge r9, r9, #NTSC_ARTIFACT_REQUIRED
|
||||||
|
|
||||||
|
tst r6, #SIZEX2_DOUBLE_WIDTH
|
||||||
|
eorne r9, r9, #NTSC_ARTIFACT_REQUIRED
|
||||||
|
|
||||||
eor r11, r11, r9
|
eor r11, r11, r9
|
||||||
tst r11, #NTSC_ARTIFACT_REQUIRED
|
tst r11, #NTSC_ARTIFACT_REQUIRED
|
||||||
mov r11, r9, lsr #NTSC_ARTIFACT_REQUIRED_SHIFT
|
mov r11, r9, lsr #NTSC_ARTIFACT_REQUIRED_SHIFT
|
||||||
|
@ -1331,8 +1270,7 @@ frame_minimum:
|
||||||
.word 10000000
|
.word 10000000
|
||||||
line_minimum:
|
line_minimum:
|
||||||
.word 20000
|
.word 20000
|
||||||
frame_timeout:
|
|
||||||
.word 24000000
|
|
||||||
hsync_scroll:
|
hsync_scroll:
|
||||||
.word (4000 - 224) | ((4000 + 224) << 16)
|
.word (4000 - 224) | ((4000 + 224) << 16)
|
||||||
line_timeout:
|
line_timeout:
|
||||||
|
@ -1344,6 +1282,76 @@ dpmsframecount:
|
||||||
dpms_state:
|
dpms_state:
|
||||||
.word 0
|
.word 0
|
||||||
|
|
||||||
|
get_params:
|
||||||
|
// Save the capture_info_t parameters to absolute addresses
|
||||||
|
ldr r2, [r0, #O_FB_PITCH]
|
||||||
|
str r2, param_fb_pitch
|
||||||
|
ldr r2, [r0, #O_FB_WIDTH]
|
||||||
|
str r2, param_fb_width
|
||||||
|
ldr r2, [r0, #O_FB_HEIGHT]
|
||||||
|
str r2, param_fb_height
|
||||||
|
ldr r2, [r0, #O_FB_SIZEX2]
|
||||||
|
str r2, param_fb_sizex2
|
||||||
|
ldr r2, [r0, #O_FB_BPP]
|
||||||
|
str r2, param_fb_bpp
|
||||||
|
ldr r2, [r0, #O_CHARS_PER_LINE]
|
||||||
|
str r2, param_chars_per_line
|
||||||
|
ldr r2, [r0, #O_NLINES]
|
||||||
|
str r2, param_nlines
|
||||||
|
ldr r2, [r0, #O_H_OFFSET]
|
||||||
|
str r2, param_h_offset
|
||||||
|
ldr r2, [r0, #O_V_OFFSET]
|
||||||
|
str r2, param_v_offset
|
||||||
|
ldr r2, [r0, #O_NCAPTURE]
|
||||||
|
str r2, param_ncapture
|
||||||
|
ldr r2, [r0, #O_CAPTURE_LINE]
|
||||||
|
str r2, param_capture_line
|
||||||
|
ldr r2, [r0, #O_PALETTE_CONTROL]
|
||||||
|
str r2, param_palette_control
|
||||||
|
ldr r2, [r0, #O_SAMPLE_WIDTH]
|
||||||
|
str r2, param_sample_width
|
||||||
|
ldr r2, [r0, #O_H_ADJUST]
|
||||||
|
str r2, param_h_adjust
|
||||||
|
ldr r2, [r0, #O_V_ADJUST]
|
||||||
|
str r2, param_v_adjust
|
||||||
|
ldr r2, [r0, #O_SYNCTYPE]
|
||||||
|
str r2, param_sync_type
|
||||||
|
ldr r3, [r0, #O_DETSYNCTYPE]
|
||||||
|
str r3, param_detected_sync_type
|
||||||
|
ldr r2, [r0, #O_VSYNCTYPE]
|
||||||
|
str r2, param_vsync_type
|
||||||
|
ldr r2, [r0, #O_VIDEOTYPE]
|
||||||
|
str r2, param_video_type
|
||||||
|
bic r1, r1, #BIT_INTERLACED_VIDEO
|
||||||
|
cmp r2, #0 //VIDEO_PROGRESSIVE;
|
||||||
|
tstne r3, #SYNC_BIT_INTERLACED
|
||||||
|
orrne r1, r1, #BIT_INTERLACED_VIDEO
|
||||||
|
ldr r2, [r0, #O_NTSCPHASE]
|
||||||
|
str r2, param_ntscphase
|
||||||
|
ldr r2, [r0, #O_BORDER]
|
||||||
|
str r2, param_border
|
||||||
|
ldr r2, [r0, #O_DELAY]
|
||||||
|
str r2, param_delay
|
||||||
|
ldr r2, [r0, #O_INTENSITY]
|
||||||
|
and r2, r2, #0x0f
|
||||||
|
eor r2, r2, #0x0f
|
||||||
|
mov r2, r2, lsl #12
|
||||||
|
orr r2, r2, lsl #16
|
||||||
|
str r2, param_intensity
|
||||||
|
ldr r2, [r0, #O_AUTOSWITCH]
|
||||||
|
str r2, param_autoswitch
|
||||||
|
ldr r2, [r0, #O_TIMINGSET]
|
||||||
|
str r2, param_timingset
|
||||||
|
ldr r2, [r0, #O_FB_BASE]
|
||||||
|
str r2, param_framebuffer0
|
||||||
|
|
||||||
|
ldr r9, ntsc_status
|
||||||
|
and r9, #NTSC_ARTIFACT_REQUIRED // last detected burst state
|
||||||
|
ldr r8, param_ntscphase // 3 bits phase + 1 bit artifact on/off + 1 bit Y invert
|
||||||
|
orr r9, r9, r8
|
||||||
|
str r9, ntsc_status
|
||||||
|
|
||||||
|
mov pc, r14
|
||||||
|
|
||||||
key_press_reset:
|
key_press_reset:
|
||||||
push {r4-r12, lr}
|
push {r4-r12, lr}
|
||||||
|
@ -1359,6 +1367,10 @@ key_press_reset:
|
||||||
pop {r4-r12, lr}
|
pop {r4-r12, lr}
|
||||||
mov pc, lr
|
mov pc, lr
|
||||||
|
|
||||||
|
|
||||||
|
frame_timeout:
|
||||||
|
.word 24000000
|
||||||
|
|
||||||
// ======================================================================
|
// ======================================================================
|
||||||
// WAIT_FOR_VSYNC
|
// WAIT_FOR_VSYNC
|
||||||
// ======================================================================
|
// ======================================================================
|
||||||
|
|
Ładowanie…
Reference in New Issue