2018-02-07 14:05:24 +00:00
|
|
|
;license:MIT
|
|
|
|
;(c) 2018 by 4am
|
|
|
|
;
|
2018-03-27 20:55:31 +00:00
|
|
|
; User interface - views and paint routines for main screen
|
2018-02-07 14:05:24 +00:00
|
|
|
;
|
|
|
|
; Public functions
|
2018-04-01 22:26:54 +00:00
|
|
|
; - PaintMain
|
|
|
|
; - RepaintMainIfDirty
|
2018-02-07 14:05:24 +00:00
|
|
|
;
|
2018-04-01 22:44:00 +00:00
|
|
|
; Public variables
|
|
|
|
; - gMainScreenPaintDirty
|
|
|
|
; - gViewInUse
|
|
|
|
;
|
2018-02-07 14:05:24 +00:00
|
|
|
|
2018-03-27 21:17:47 +00:00
|
|
|
MAGICRTS = $FF58 ; used to set overflow bit
|
2018-02-07 14:05:24 +00:00
|
|
|
|
|
|
|
; View IDs (application-specific, acceptable range 0..15, no duplicates)
|
2018-02-24 20:25:41 +00:00
|
|
|
ID_PREVIOUS = 1
|
|
|
|
ID_OPTIONS = 2
|
|
|
|
ID_NEXT = 3
|
2018-04-01 16:21:48 +00:00
|
|
|
ID_PLAY = 4
|
|
|
|
ID_BOXART = 5
|
|
|
|
ID_HINTS = 6
|
|
|
|
ID_VERSIONS = 7
|
|
|
|
ID_INFO = 8
|
|
|
|
ID_DESCRIPTION = 9
|
|
|
|
|
2018-04-01 22:26:54 +00:00
|
|
|
gMainScreenPaintDirty
|
|
|
|
!byte 0 ; 0=false, 1=true
|
2018-04-01 22:44:00 +00:00
|
|
|
gViewInUse
|
2018-04-01 22:26:54 +00:00
|
|
|
!byte 0,1,1,1,1,0,0,0,0,0,0,0,0,0,0
|
2018-02-07 14:05:24 +00:00
|
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
2018-04-01 22:26:54 +00:00
|
|
|
; PaintMain/RepaintMainIfDirty
|
|
|
|
; call WeeGUI to create all application views and paint them
|
|
|
|
; PaintMain entry point will clear the screen and unconditionally paint everything
|
|
|
|
; RepaintMainIfDirty will only repaint certain views that vary between games,
|
|
|
|
; and only if gMainScreenPaintDirty=1
|
2018-02-07 14:05:24 +00:00
|
|
|
;
|
|
|
|
; in: WeeGUI loaded and initialized
|
2018-03-27 21:17:47 +00:00
|
|
|
; out: all registers and flags clobbered
|
2018-02-07 14:05:24 +00:00
|
|
|
;------------------------------------------------------------------------------
|
2018-04-01 21:20:42 +00:00
|
|
|
!zone {
|
2018-04-01 22:26:54 +00:00
|
|
|
PaintMain
|
|
|
|
ldx #WGReset
|
|
|
|
jsr WeeGUI
|
2018-04-01 22:44:00 +00:00
|
|
|
stz gViewInUse+ID_BOXART
|
|
|
|
stz gViewInUse+ID_HINTS
|
|
|
|
stz gViewInUse+ID_VERSIONS
|
2018-04-01 22:26:54 +00:00
|
|
|
ldx #1 ; flag - clear screen before painting
|
|
|
|
stx gMainScreenPaintDirty
|
|
|
|
!byte $2C
|
|
|
|
RepaintMainIfDirty
|
|
|
|
ldx #0 ; flag - do not clear screen before painting
|
|
|
|
lda gMainScreenPaintDirty
|
|
|
|
bne +
|
|
|
|
rts
|
|
|
|
+ stz gMainScreenPaintDirty ; clear dirty flag
|
|
|
|
phx ; push 'clear screen' flag (will pop at end of procedure)
|
|
|
|
|
|
|
|
jsr CreateButton ; create 'previous' button
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kViewPrevious
|
2018-04-01 22:26:54 +00:00
|
|
|
|
|
|
|
jsr CreateButton ; create 'settings' button
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kViewOptions
|
2018-04-01 22:26:54 +00:00
|
|
|
|
|
|
|
jsr CreateButton ; create 'next game' button
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kViewNext
|
2018-04-01 16:21:48 +00:00
|
|
|
|
2018-04-01 22:26:54 +00:00
|
|
|
lda gHasSavedGames ; create 'play game' or 'resume game' button
|
2018-04-01 16:21:48 +00:00
|
|
|
beq .wantPlayButton
|
2018-03-01 16:06:00 +00:00
|
|
|
jsr CreateButton
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kViewResume
|
2018-04-01 16:21:48 +00:00
|
|
|
bra .donePlayOrResume
|
|
|
|
.wantPlayButton
|
2018-03-01 16:06:00 +00:00
|
|
|
jsr CreateButton
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kViewPlay
|
2018-04-01 16:21:48 +00:00
|
|
|
.donePlayOrResume
|
|
|
|
|
2018-04-01 22:44:00 +00:00
|
|
|
jsr CreateOrDestroyButton ; create or destroy 'artwork' button
|
2018-04-01 16:21:48 +00:00
|
|
|
!byte ID_BOXART
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kViewBoxArt
|
2018-04-01 16:21:48 +00:00
|
|
|
!word kHasArtwork
|
|
|
|
|
2018-04-01 22:44:00 +00:00
|
|
|
jsr CreateOrDestroyButton ; create or destroy 'hints' button
|
2018-04-01 16:21:48 +00:00
|
|
|
!byte ID_HINTS
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kViewHints
|
2018-04-01 16:21:48 +00:00
|
|
|
!word kHasHints
|
|
|
|
|
2018-04-01 22:44:00 +00:00
|
|
|
jsr CreateOrDestroyButton ; create or destroy 'revisions' button
|
2018-04-01 16:21:48 +00:00
|
|
|
!byte ID_VERSIONS
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kViewVersions
|
2018-04-01 16:21:48 +00:00
|
|
|
!word kHasVersions
|
2018-02-07 14:05:24 +00:00
|
|
|
|
|
|
|
ldx #WGCreateView ; create borderless frame for game title and info
|
2018-04-01 21:20:42 +00:00
|
|
|
+LDADDR kViewInfo
|
2018-03-29 02:49:51 +00:00
|
|
|
+STAY PARAM0
|
2018-02-07 14:05:24 +00:00
|
|
|
jsr WeeGUI
|
|
|
|
|
|
|
|
ldx #WGCreateView ; create scrollable frame for game description text
|
2018-04-01 21:20:42 +00:00
|
|
|
+LDADDR kViewDescription
|
2018-03-29 02:49:51 +00:00
|
|
|
+STAY PARAM0
|
2018-02-07 14:05:24 +00:00
|
|
|
jsr WeeGUI
|
2018-04-01 22:26:54 +00:00
|
|
|
ldx #WGViewSetAction ; set view action (called automatically after scrolling)
|
|
|
|
+LDADDR PaintDescriptionView
|
2018-03-29 02:49:51 +00:00
|
|
|
+STAY PARAM0
|
2018-02-07 14:05:24 +00:00
|
|
|
jsr WeeGUI
|
|
|
|
|
2018-04-01 22:26:54 +00:00
|
|
|
pla ; clear screen before repainting?
|
|
|
|
beq .nohome ; no -> repaint over existing screen, YOLO
|
|
|
|
ldx #WGClearScreen ; clear screen
|
2018-04-01 16:21:48 +00:00
|
|
|
jsr WeeGUI
|
2018-04-01 22:26:54 +00:00
|
|
|
jsr PaintTitleBar ; paint top bar
|
2018-02-07 14:05:24 +00:00
|
|
|
|
2018-04-01 22:26:54 +00:00
|
|
|
lda #4 ; paint horizontal separator bar
|
2018-02-24 20:25:41 +00:00
|
|
|
sta PARAM1
|
2018-04-01 16:21:48 +00:00
|
|
|
ldy #78
|
|
|
|
lda #83
|
|
|
|
- sty PARAM0
|
|
|
|
ldx #WGSetGlobalCursor
|
|
|
|
jsr WeeGUI
|
|
|
|
ldx #WGPlot
|
|
|
|
jsr WeeGUI
|
|
|
|
dey
|
|
|
|
bne -
|
|
|
|
ldx #WGSyncGlobalCursor
|
2018-04-01 22:26:54 +00:00
|
|
|
jsr WeeGUI
|
2018-02-07 14:05:24 +00:00
|
|
|
|
2018-04-01 22:26:54 +00:00
|
|
|
.nohome ldx #WGViewPaintAll
|
|
|
|
jsr WeeGUI ; tell everything that can paint itself, to paint itself
|
|
|
|
jsr PaintInfoView ; paint info box manually
|
|
|
|
|
|
|
|
ldx #WGSelectView ; reset scrolling of description box
|
|
|
|
lda #ID_DESCRIPTION
|
|
|
|
jsr WeeGUI
|
|
|
|
ldx #WGScrollX
|
|
|
|
lda #0
|
|
|
|
jsr WeeGUI
|
|
|
|
ldx #WGScrollY
|
|
|
|
lda #0
|
|
|
|
jsr WeeGUI
|
|
|
|
|
|
|
|
jmp PaintDescriptionView ; paint description box manually
|
|
|
|
}
|
|
|
|
|
|
|
|
;------------------------------------------------------------------------------
|
2018-04-01 22:44:00 +00:00
|
|
|
; CreateOrDestroyButton
|
|
|
|
; create or destroy a WeeGUI Button view, based on per-game options
|
|
|
|
; and whether the button already exists
|
2018-04-01 22:26:54 +00:00
|
|
|
;
|
|
|
|
; in: WeeGUI loaded and initialized
|
|
|
|
; gOptionsStore populated
|
|
|
|
; stack contains 5 bytes of parameters:
|
|
|
|
; +1 [byte] WeeGUI view ID
|
|
|
|
; +2 [word] address of WeeGUI view configuration record
|
|
|
|
; +4 [word] address of length-prefixed key into gOptionsStore
|
|
|
|
; out: all registers and flags clobbered
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
!zone {
|
2018-04-01 22:44:00 +00:00
|
|
|
CreateOrDestroyButton
|
2018-04-01 22:26:54 +00:00
|
|
|
+PARAMS_ON_STACK 5
|
|
|
|
|
|
|
|
ldy #1
|
|
|
|
lda (PARAM),y
|
|
|
|
sta .viewID
|
|
|
|
ldy #3
|
|
|
|
lda (PARAM),y
|
|
|
|
pha
|
|
|
|
dey
|
|
|
|
lda (PARAM),y
|
|
|
|
ply
|
|
|
|
+STAY .viewConfigurationRecord
|
|
|
|
ldy #5
|
|
|
|
lda (PARAM),y
|
|
|
|
pha
|
|
|
|
dey
|
|
|
|
lda (PARAM),y
|
|
|
|
ply
|
|
|
|
+STAY .optionsStoreKey
|
|
|
|
|
|
|
|
jsr okvs_get
|
|
|
|
!word gOptionsStore
|
|
|
|
.optionsStoreKey
|
|
|
|
!word $FDFD ; SMC
|
|
|
|
.viewID=*+1
|
|
|
|
ldx #$FD ; SMC (X = WeeGUI view ID)
|
|
|
|
jsr okvs_as_boolean
|
2018-04-01 22:44:00 +00:00
|
|
|
beq .destroy
|
|
|
|
|
|
|
|
lda gViewInUse,x ; create button if it doesn't exist
|
|
|
|
bne .done ; oh it does exist, so we're done
|
2018-04-01 22:26:54 +00:00
|
|
|
lda #1
|
2018-04-01 22:44:00 +00:00
|
|
|
sta gViewInUse,x
|
2018-04-01 22:26:54 +00:00
|
|
|
jsr CreateButton
|
|
|
|
.viewConfigurationRecord
|
|
|
|
!word $FDFD ; SMC
|
|
|
|
bra .done
|
|
|
|
|
2018-04-01 22:44:00 +00:00
|
|
|
.destroy lda gViewInUse,x ; destroy button if it exists
|
|
|
|
beq .done ; oh it doesn't exist, so we're done
|
2018-04-01 22:26:54 +00:00
|
|
|
lda #0
|
2018-04-01 22:44:00 +00:00
|
|
|
sta gViewInUse,x
|
2018-04-01 22:26:54 +00:00
|
|
|
txa ; A = WeeGUI view ID
|
|
|
|
ldx #WGSelectView
|
|
|
|
jsr WeeGUI
|
|
|
|
ldx #WGDeleteView
|
|
|
|
jsr WeeGUI
|
|
|
|
|
|
|
|
.done rts
|
|
|
|
}
|
|
|
|
|
|
|
|
!zone {
|
|
|
|
PaintDescriptionView
|
2018-02-07 14:05:24 +00:00
|
|
|
ldx #WGSelectView
|
2018-02-08 02:41:07 +00:00
|
|
|
lda #ID_DESCRIPTION
|
2018-02-07 14:05:24 +00:00
|
|
|
jsr WeeGUI
|
2018-03-29 02:49:51 +00:00
|
|
|
+LDAY addrDescription
|
2018-03-30 17:43:48 +00:00
|
|
|
ldx #kDescriptionPaintWidth
|
2018-04-01 22:26:54 +00:00
|
|
|
jsr MultiPrint
|
2018-02-07 21:02:14 +00:00
|
|
|
lda .vtab+1
|
|
|
|
cmp #10
|
|
|
|
bcs +
|
|
|
|
lda #10
|
2018-03-01 16:06:00 +00:00
|
|
|
+ ldx #WGSetContentHeight
|
|
|
|
jmp WeeGUI
|
2018-02-07 21:02:14 +00:00
|
|
|
|
2018-04-01 22:26:54 +00:00
|
|
|
PaintInfoView
|
2018-02-07 21:02:14 +00:00
|
|
|
ldx #WGSelectView
|
2018-02-08 21:28:49 +00:00
|
|
|
lda #ID_INFO
|
2018-02-07 21:02:14 +00:00
|
|
|
jsr WeeGUI
|
2018-03-29 02:49:51 +00:00
|
|
|
+LDAY addrInfo
|
2018-03-30 17:43:48 +00:00
|
|
|
ldx #kInfoPaintWidth
|
2018-04-01 22:26:54 +00:00
|
|
|
jsr MultiPrint
|
2018-03-28 15:48:47 +00:00
|
|
|
|
|
|
|
jsr okvs_get ; get shortname of current game
|
|
|
|
!word gGlobalPrefsStore
|
|
|
|
!word kLastPlayed
|
2018-03-31 14:22:09 +00:00
|
|
|
+STAY + ; A/Y contains address
|
|
|
|
|
2018-03-28 15:48:47 +00:00
|
|
|
jsr okvs_get ; get selected version of this game
|
2018-03-28 02:40:09 +00:00
|
|
|
!word gGlobalPrefsStore
|
2018-03-29 02:49:51 +00:00
|
|
|
+ !word $FDFD ; SMC
|
2018-03-31 14:22:09 +00:00
|
|
|
+STAY + ; A/Y contains address
|
|
|
|
|
2018-03-28 15:48:47 +00:00
|
|
|
jsr okvs_get ; get long description of this version
|
2018-03-28 02:40:09 +00:00
|
|
|
!word gVersionsStore
|
2018-03-29 02:49:51 +00:00
|
|
|
+ !word $FDFD ; SMC
|
2018-03-31 14:22:09 +00:00
|
|
|
; A/Y contains address
|
|
|
|
ldx #kInfoPaintWidth
|
|
|
|
jsr CreateNullTerminatedString
|
|
|
|
|
|
|
|
+LDADDR kNullTerminatedBuffer
|
2018-04-01 22:26:54 +00:00
|
|
|
bra MultiPrintWhereYouAre
|
2018-03-28 02:40:09 +00:00
|
|
|
|
2018-04-01 22:26:54 +00:00
|
|
|
MultiPrint
|
2018-02-08 02:41:07 +00:00
|
|
|
stz .htab+1
|
|
|
|
stz .vtab+1
|
2018-04-01 22:26:54 +00:00
|
|
|
MultiPrintWhereYouAre
|
2018-03-31 14:28:36 +00:00
|
|
|
stx .printLineLength+1
|
2018-03-31 14:22:09 +00:00
|
|
|
+STAY $00
|
2018-02-07 14:05:24 +00:00
|
|
|
.printLoop
|
2018-02-07 21:02:14 +00:00
|
|
|
lda ($00)
|
|
|
|
beq .printDone
|
2018-02-07 14:05:24 +00:00
|
|
|
ldx #WGSetCursor
|
2018-03-28 15:48:47 +00:00
|
|
|
.htab lda #$FD ; SMC
|
2018-02-07 14:05:24 +00:00
|
|
|
sta PARAM0
|
2018-03-28 15:48:47 +00:00
|
|
|
.vtab lda #$FD ; SMC
|
2018-02-07 14:05:24 +00:00
|
|
|
sta PARAM1
|
|
|
|
jsr WeeGUI
|
|
|
|
ldx #WGPrint
|
|
|
|
lda $00
|
|
|
|
sta PARAM0
|
|
|
|
lda $01
|
|
|
|
sta PARAM1
|
|
|
|
bit MAGICRTS ; set overflow bit
|
|
|
|
jsr WeeGUI
|
2018-02-08 21:28:49 +00:00
|
|
|
lda $00
|
|
|
|
clc
|
|
|
|
.printLineLength
|
2018-03-28 15:48:47 +00:00
|
|
|
adc #$fd ; SMC
|
2018-02-08 21:28:49 +00:00
|
|
|
sta $00
|
|
|
|
bcc +
|
2018-02-07 14:05:24 +00:00
|
|
|
inc $01
|
2018-02-08 21:28:49 +00:00
|
|
|
+ inc .vtab+1
|
2018-02-07 14:05:24 +00:00
|
|
|
bne .printLoop
|
2018-02-07 21:02:14 +00:00
|
|
|
.printDone
|
2018-02-07 14:05:24 +00:00
|
|
|
rts
|
|
|
|
|
2018-04-01 21:20:42 +00:00
|
|
|
kViewPrevious
|
2018-02-07 14:05:24 +00:00
|
|
|
!byte ID_PREVIOUS ; view ID
|
|
|
|
!byte 1 ; left
|
|
|
|
!byte 2 ; top
|
2018-04-01 16:21:48 +00:00
|
|
|
!byte 13 ; width
|
2018-02-07 14:05:24 +00:00
|
|
|
!word callback_previous ; callback
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kStringPrevious ; caption
|
|
|
|
kStringPrevious
|
2018-02-24 20:25:41 +00:00
|
|
|
!text "< "
|
|
|
|
!byte $10 ; 'P' inverse
|
2018-04-01 16:21:48 +00:00
|
|
|
!text "revious",0
|
2018-02-07 14:05:24 +00:00
|
|
|
|
2018-04-01 21:20:42 +00:00
|
|
|
kViewNext
|
2018-02-07 14:05:24 +00:00
|
|
|
!byte ID_NEXT ; view ID
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte 66 ; left
|
2018-02-07 14:05:24 +00:00
|
|
|
!byte 2 ; top
|
|
|
|
!byte 13 ; width
|
|
|
|
!word callback_next ; callback
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kStringNext ; caption
|
|
|
|
kStringNext
|
2018-02-07 14:05:24 +00:00
|
|
|
!byte $0E ; 'N' inverse
|
|
|
|
!text "ext game >",0
|
|
|
|
|
2018-04-01 21:20:42 +00:00
|
|
|
kViewOptions
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte ID_OPTIONS ; view ID
|
|
|
|
!byte 34 ; left
|
|
|
|
!byte 2 ; top
|
|
|
|
!byte 12 ; width
|
|
|
|
!word callback_options ; callback
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kStringOptions
|
|
|
|
kStringOptions
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte $13 ; 'S' inverse
|
|
|
|
!text "ettings",0
|
|
|
|
|
2018-04-01 21:20:42 +00:00
|
|
|
kViewPlay
|
2018-02-07 14:05:24 +00:00
|
|
|
!byte ID_PLAY ; view ID
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte 66 ; left
|
|
|
|
!byte 6 ; top
|
2018-02-07 14:05:24 +00:00
|
|
|
!byte 13 ; width
|
|
|
|
!word callback_play ; callback
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kStringPlay ; caption
|
|
|
|
kStringPlay
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte 144
|
|
|
|
!text "lay "
|
|
|
|
!byte $67 ; 'g' inverse
|
|
|
|
!text "ame",0
|
2018-02-07 14:05:24 +00:00
|
|
|
|
2018-04-01 21:20:42 +00:00
|
|
|
kViewResume
|
2018-04-01 16:21:48 +00:00
|
|
|
!byte ID_PLAY ; view ID
|
|
|
|
!byte 66 ; left
|
|
|
|
!byte 6 ; top
|
|
|
|
!byte 13 ; width
|
|
|
|
!word callback_resume ; callback
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kStringResume ; caption
|
|
|
|
kStringResume
|
2018-04-01 16:21:48 +00:00
|
|
|
!byte 146
|
|
|
|
!text "esume "
|
|
|
|
!byte $67 ; 'g' inverse
|
|
|
|
!text "ame",0
|
|
|
|
|
2018-04-01 21:20:42 +00:00
|
|
|
kViewBoxArt
|
2018-02-07 14:05:24 +00:00
|
|
|
!byte ID_BOXART ; view ID
|
|
|
|
!byte 66 ; left
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte 8 ; top
|
|
|
|
!byte 13 ; width
|
2018-02-07 14:05:24 +00:00
|
|
|
!word callback_boxart ; callback
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kStringBoxArt ; caption
|
|
|
|
kStringBoxArt
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte $01 ; 'A' inverse
|
|
|
|
!text "rtwork",0
|
2018-02-07 14:05:24 +00:00
|
|
|
|
2018-04-01 21:20:42 +00:00
|
|
|
kViewHints
|
2018-04-01 16:21:48 +00:00
|
|
|
!byte ID_HINTS ; view ID
|
2018-02-07 14:05:24 +00:00
|
|
|
!byte 66 ; left
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte 10 ; top
|
|
|
|
!byte 13 ; width
|
|
|
|
!word callback_clues ; callback
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kStringHints ; caption
|
|
|
|
kStringHints
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte $08 ; 'H' inverse
|
|
|
|
!text "ints",0
|
|
|
|
|
2018-04-01 21:20:42 +00:00
|
|
|
kViewVersions
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte ID_VERSIONS ; view ID
|
|
|
|
!byte 66 ; left
|
|
|
|
!byte 12 ; top
|
|
|
|
!byte 13 ; width
|
|
|
|
!word callback_versions ; callback
|
2018-04-01 21:20:42 +00:00
|
|
|
!word kStringVersions ; caption
|
|
|
|
kStringVersions
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte $12 ; 'R' inverse
|
|
|
|
!text "evisions",0
|
2018-02-07 14:05:24 +00:00
|
|
|
|
2018-04-01 21:20:42 +00:00
|
|
|
kViewInfo
|
2018-02-07 14:05:24 +00:00
|
|
|
!byte ID_INFO ; view ID
|
|
|
|
!byte 0 ; style
|
2018-02-24 20:25:41 +00:00
|
|
|
!byte 0 ; left
|
|
|
|
!byte 6 ; top
|
|
|
|
!byte 65 ; visible width
|
|
|
|
!byte 6 ; visible height
|
|
|
|
!byte 65 ; width
|
|
|
|
!byte 6 ; height
|
2018-02-07 14:05:24 +00:00
|
|
|
|
2018-04-01 21:20:42 +00:00
|
|
|
kViewDescription
|
2018-02-07 14:05:24 +00:00
|
|
|
!byte ID_DESCRIPTION ; view ID
|
|
|
|
!byte 2 ; style
|
|
|
|
!byte 1 ; left
|
|
|
|
!byte 15 ; top
|
|
|
|
!byte 77 ; visible width
|
|
|
|
!byte 8 ; visible height
|
|
|
|
!byte 77 ; width
|
2018-02-07 21:02:14 +00:00
|
|
|
!byte 39 ; height
|
2018-02-07 14:05:24 +00:00
|
|
|
}
|