commit 9d98e9f557dc12b974fc122c683c907e96121f56 Author: Polprzewodnikowy Date: Fri Aug 4 23:40:16 2023 +0000 deploy: 24c7f3db72a259a812cad06256e14be7cfb78f06 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/actions_8h.html b/actions_8h.html new file mode 100644 index 00000000..e9cf00ca --- /dev/null +++ b/actions_8h.html @@ -0,0 +1,101 @@ + + + + + + + +N64FlashcartMenu: actions.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
actions.h File Reference
+
+
+ +

Menu Actions. +More...

+ +

Go to the source code of this file.

+ + + + +

+Functions

+void actions_update (menu_t *menu)
 
+

Detailed Description

+

Menu Actions.

+
+ + + + diff --git a/actions_8h_source.html b/actions_8h_source.html new file mode 100644 index 00000000..c4a96c9e --- /dev/null +++ b/actions_8h_source.html @@ -0,0 +1,99 @@ + + + + + + + +N64FlashcartMenu: actions.h Source File + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
actions.h
+
+
+Go to the documentation of this file.
1
+
7#ifndef ACTIONS_H__
+
8#define ACTIONS_H__
+
9
+
10
+
11#include "menu_state.h"
+
12
+
13
+
14void actions_update (menu_t *menu);
+
15
+
16
+
17#endif
+
Menu State.
+
Menu Structure.
Definition: menu_state.h:54
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 00000000..92d78319 --- /dev/null +++ b/annotated.html @@ -0,0 +1,113 @@ + + + + + + + +N64FlashcartMenu: Data Structures + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Data Structures
+
+
+
Here are the data structures with brief descriptions:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cai_regs_t
 Cboot_params_tBoot Parameters Structure
 Ccache_metadata_t
 Ccomponent_background_t
 Ccomponent_boxart_t
 Cdpc_regs_tDPC Registers Structure
 Centry_tFile Entry Structure
 Cflashcart_tFlashcart Structure
 Cipl3_crc32_t
 Cmenu_tMenu Structure
 Cmenu_t.actions
 Cmenu_t.browser
 Cmp3player_t
 Cos_info_t
 Cpath_tPath Structure
 Cpi_regs_tParallel Interface Register Structure
 Cpi_regs_t.DOM
 Cpng_decoder_t
 Crom_config_flags_tROM Config Flags Structure
 Crom_header_tROM Header Structure
 Crom_metadata_tROM Metadata Structure
 Csc64_buffers_t
 Csc64_cmd_t
 Csc64_regs_t
 Csettings_tSettings Structure
 Csp_mem_t
 Csp_regs_t
 Cvi_regs_tVideo Interface Registers Structure
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 00000000..224b29aa Binary files /dev/null and b/bc_s.png differ diff --git a/bc_sd.png b/bc_sd.png new file mode 100644 index 00000000..31ca888d Binary files /dev/null and b/bc_sd.png differ diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 00000000..940a0b95 Binary files /dev/null and b/bdwn.png differ diff --git a/boot_8h.html b/boot_8h.html new file mode 100644 index 00000000..9d114d15 --- /dev/null +++ b/boot_8h.html @@ -0,0 +1,175 @@ + + + + + + + +N64FlashcartMenu: boot.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
boot.h File Reference
+
+
+ +

Flashcart Boot Subsystem. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Data Structures

struct  boot_params_t
 Boot Parameters Structure. More...
 
+ + + + + + + + + + +

+Enumerations

enum  boot_device_type_t { BOOT_DEVICE_TYPE_ROM = 0 +, BOOT_DEVICE_TYPE_DD = 1 + }
 Boot device type enumeration.
 
enum  boot_reset_type_t { BOOT_RESET_TYPE_COLD = 0 +, BOOT_RESET_TYPE_NMI = 1 + }
 Reset type enumeration.
 
enum  boot_tv_type_t { BOOT_TV_TYPE_PAL = 0 +, BOOT_TV_TYPE_NTSC = 1 +, BOOT_TV_TYPE_MPAL = 2 +, BOOT_TV_TYPE_PASSTHROUGH = 3 + }
 TV type enumeration.
 
+ + + + + +

+Functions

+bool boot_is_warm (void)
 
+void boot (boot_params_t *params)
 
+

Detailed Description

+

Flashcart Boot Subsystem.

+

Data Structure Documentation

+ +

◆ boot_params_t

+ +
+
+ + + + +
struct boot_params_t
+
+

Boot Parameters Structure.

+
+ + + + + + + + + + + + + +
Data Fields
+boot_device_type_t +device_type +
+boot_tv_type_t +tv_type +
+uint8_t +cic_seed +
+bool +detect_cic_seed +
+ +
+
+
+ + + + diff --git a/boot_8h_source.html b/boot_8h_source.html new file mode 100644 index 00000000..6dc0a246 --- /dev/null +++ b/boot_8h_source.html @@ -0,0 +1,128 @@ + + + + + + + +N64FlashcartMenu: boot.h Source File + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
boot.h
+
+
+Go to the documentation of this file.
1
+
7#ifndef BOOT_H__
+
8#define BOOT_H__
+
9
+
10
+
11#include <stdbool.h>
+
12#include <stdint.h>
+
13
+
14
+
16typedef enum {
+
17 BOOT_DEVICE_TYPE_ROM = 0,
+
18 BOOT_DEVICE_TYPE_DD = 1,
+ +
20
+
22typedef enum {
+
23 BOOT_RESET_TYPE_COLD = 0,
+
24 BOOT_RESET_TYPE_NMI = 1,
+ +
26
+
28typedef enum {
+
29 BOOT_TV_TYPE_PAL = 0,
+
30 BOOT_TV_TYPE_NTSC = 1,
+
31 BOOT_TV_TYPE_MPAL = 2,
+
32 BOOT_TV_TYPE_PASSTHROUGH = 3,
+ +
34
+
36typedef struct {
+
37 boot_device_type_t device_type;
+
38 boot_tv_type_t tv_type;
+
39 uint8_t cic_seed;
+
40 bool detect_cic_seed;
+ +
42
+
43
+
44bool boot_is_warm (void);
+
45void boot (boot_params_t *params);
+
46
+
47
+
48#endif
+
boot_reset_type_t
Reset type enumeration.
Definition: boot.h:22
+
boot_tv_type_t
TV type enumeration.
Definition: boot.h:28
+
boot_device_type_t
Boot device type enumeration.
Definition: boot.h:16
+
Boot Parameters Structure.
Definition: boot.h:36
+
+ + + + diff --git a/boot__io_8h.html b/boot__io_8h.html new file mode 100644 index 00000000..a8150020 --- /dev/null +++ b/boot__io_8h.html @@ -0,0 +1,928 @@ + + + + + + + +N64FlashcartMenu: boot_io.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
boot_io.h File Reference
+
+
+ +

Flashcart Boot IO. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + +

+Data Structures

struct  sp_mem_t
 
struct  sp_regs_t
 
struct  dpc_regs_t
 DPC Registers Structure. More...
 
struct  vi_regs_t
 Video Interface Registers Structure. More...
 
struct  ai_regs_t
 
struct  pi_regs_t
 Parallel Interface Register Structure. More...
 
struct  os_info_t
 
struct  pi_regs_t.DOM
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

+#define UNCACHED(address)   ((typeof(address)) (((io32_t) (address)) | (0xA0000000UL)))
 
+#define SP_MEM_BASE   (0x04000000UL)
 
+#define SP_MEM   ((sp_mem_t *) SP_MEM_BASE)
 
+#define SP_BASE   (0x04040000UL)
 
+#define SP   ((sp_regs_t *) SP_BASE)
 
+#define SP_SR_HALT   (1 << 0)
 
+#define SP_SR_BROKE   (1 << 1)
 
+#define SP_SR_DMA_BUSY   (1 << 2)
 
+#define SP_SR_DMA_FULL   (1 << 3)
 
+#define SP_SR_IO_FULL   (1 << 4)
 
+#define SP_SR_SSTEP   (1 << 5)
 
+#define SP_SR_INTR_BREAK   (1 << 6)
 
+#define SP_SR_SIG0   (1 << 7)
 
+#define SP_SR_SIG1   (1 << 8)
 
+#define SP_SR_SIG2   (1 << 9)
 
+#define SP_SR_SIG3   (1 << 10)
 
+#define SP_SR_SIG4   (1 << 11)
 
+#define SP_SR_SIG5   (1 << 12)
 
+#define SP_SR_SIG6   (1 << 13)
 
+#define SP_SR_SIG7   (1 << 14)
 
+#define SP_SR_CLR_HALT   (1 << 0)
 
+#define SP_SR_SET_HALT   (1 << 1)
 
+#define SP_SR_CLR_BROKE   (1 << 2)
 
+#define SP_SR_CLR_INTR   (1 << 3)
 
+#define SP_SR_SET_INTR   (1 << 4)
 
+#define SP_SR_CLR_SSTEP   (1 << 5)
 
+#define SP_SR_SET_SSTEP   (1 << 6)
 
+#define SP_SR_CLR_INTR_BREAK   (1 << 7)
 
+#define SP_SR_SET_INTR_BREAK   (1 << 8)
 
+#define SP_SR_CLR_SIG0   (1 << 9)
 
+#define SP_SR_SET_SIG0   (1 << 10)
 
+#define SP_SR_CLR_SIG1   (1 << 11)
 
+#define SP_SR_SET_SIG1   (1 << 12)
 
+#define SP_SR_CLR_SIG2   (1 << 13)
 
+#define SP_SR_SET_SIG2   (1 << 14)
 
+#define SP_SR_CLR_SIG3   (1 << 15)
 
+#define SP_SR_SET_SIG3   (1 << 16)
 
+#define SP_SR_CLR_SIG4   (1 << 17)
 
+#define SP_SR_SET_SIG4   (1 << 18)
 
+#define SP_SR_CLR_SIG5   (1 << 19)
 
+#define SP_SR_SET_SIG5   (1 << 20)
 
+#define SP_SR_CLR_SIG6   (1 << 21)
 
+#define SP_SR_SET_SIG6   (1 << 22)
 
+#define SP_SR_CLR_SIG7   (1 << 23)
 
+#define SP_SR_SET_SIG7   (1 << 24)
 
+#define DPC_BASE   (0x04100000UL)
 
+#define DPC   ((dpc_regs_t *) DPC_BASE)
 
+#define DPC_SR_XBUS_DMEM_DMA   (1 << 0)
 
+#define DPC_SR_FREEZE   (1 << 1)
 
+#define DPC_SR_FLUSH   (1 << 2)
 
+#define DPC_SR_START_GCLK   (1 << 3)
 
+#define DPC_SR_TMEM_BUSY   (1 << 4)
 
+#define DPC_SR_PIPE_BUSY   (1 << 5)
 
+#define DPC_SR_CMD_BUSY   (1 << 6)
 
+#define DPC_SR_CBUF_READY   (1 << 7)
 
+#define DPC_SR_DMA_BUSY   (1 << 8)
 
+#define DPC_SR_END_VALID   (1 << 9)
 
+#define DPC_SR_START_VALID   (1 << 10)
 
+#define DPC_SR_CLR_XBUS_DMEM_DMA   (1 << 0)
 
+#define DPC_SR_SET_XBUS_DMEM_DMA   (1 << 1)
 
+#define DPC_SR_CLR_FREEZE   (1 << 2)
 
+#define DPC_SR_SET_FREEZE   (1 << 3)
 
+#define DPC_SR_CLR_FLUSH   (1 << 4)
 
+#define DPC_SR_SET_FLUSH   (1 << 5)
 
+#define DPC_SR_CLR_TMEM_CTR   (1 << 6)
 
+#define DPC_SR_CLR_PIPE_CTR   (1 << 7)
 
+#define DPC_SR_CLR_CMD_CTR   (1 << 8)
 
+#define DPC_SR_CLR_CLOCK_CTR   (1 << 9)
 
+#define VI_BASE   (0x04400000UL)
 
+#define VI   ((vi_regs_t *) VI_BASE)
 
+#define VI_CR_TYPE_16   (2 << 0)
 
+#define VI_CR_TYPE_32   (3 << 0)
 
+#define VI_CR_GAMMA_DITHER_ON   (1 << 2)
 
+#define VI_CR_GAMMA_ON   (1 << 3)
 
+#define VI_CR_DIVOT_ON   (1 << 4)
 
+#define VI_CR_SERRATE_ON   (1 << 6)
 
+#define VI_CR_ANTIALIAS_0   (1 << 8)
 
+#define VI_CR_ANTIALIAS_1   (1 << 9)
 
+#define VI_CR_PIXEL_ADVANCE_0   (1 << 12)
 
+#define VI_CR_PIXEL_ADVANCE_1   (1 << 13)
 
+#define VI_CR_PIXEL_ADVANCE_2   (1 << 14)
 
+#define VI_CR_PIXEL_ADVANCE_3   (1 << 15)
 
+#define VI_CR_DITHER_FILTER_ON   (1 << 16)
 
+#define AI_BASE   (0x04500000UL)
 
+#define AI   ((ai_regs_t *) AI_BASE)
 
+#define AI_SR_DMA_BUSY   (1 << 30)
 
+#define AI_SR_FIFO_FULL   (1 << 31)
 
+#define AI_CR_DMA_ON   (1 << 0)
 
+#define PI_BASE   (0x04600000UL)
 
+#define PI   ((pi_regs_t *) PI_BASE)
 
+#define PI_SR_DMA_BUSY   (1 << 0)
 
+#define PI_SR_IO_BUSY   (1 << 1)
 
+#define PI_SR_DMA_ERROR   (1 << 2)
 
+#define PI_SR_RESET   (1 << 0)
 
+#define PI_SR_CLR_INTR   (1 << 1)
 
+#define ROM_DDIPL_BASE   (0x06000000UL)
 
+#define ROM_DDIPL   ((io32_t *) ROM_DDIPL_BASE)
 
+#define ROM_CART_BASE   (0x10000000UL)
 
+#define ROM_CART   ((io32_t *) ROM_CART_BASE)
 
+#define OS_INFO_BASE   (0x80000300UL)
 
+#define OS_INFO   ((os_info_t *) OS_INFO_BASE)
 
+#define OS_INFO_RESET_TYPE_COLD   (0)
 
+#define OS_INFO_RESET_TYPE_NMI   (1)
 
+ + + + + +

+Typedefs

+typedef volatile uint8_t io8_t
 
+typedef volatile uint32_t io32_t
 
+

Detailed Description

+

Flashcart Boot IO.

+

Data Structure Documentation

+ +

◆ sp_mem_t

+ +
+
+ + + + +
struct sp_mem_t
+
+
+ + + + + + + +
Data Fields
+io32_t +DMEM[1024] +
+io32_t +IMEM[1024] +
+ +
+
+ +

◆ sp_regs_t

+ +
+
+ + + + +
struct sp_regs_t
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+io32_t +PADDR +
+io32_t +MADDR +
+io32_t +RD_LEN +
+io32_t +WR_LEN +
+io32_t +SR +
+io32_t +DMA_FULL +
+io32_t +DMA_BUSY +
+io32_t +SEMAPHORE +
+ +
+
+ +

◆ dpc_regs_t

+ +
+
+ + + + +
struct dpc_regs_t
+
+

DPC Registers Structure.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+io32_t +START +
+io32_t +END +
+io32_t +CURRENT +
+io32_t +SR +
+io32_t +CLOCK +
+io32_t +BUF_BUSY +
+io32_t +PIPE_BUSY +
+io32_t +TMEM +
+ +
+
+ +

◆ vi_regs_t

+ +
+
+ + + + +
struct vi_regs_t
+
+

Video Interface Registers Structure.

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+io32_t +CR +
+io32_t +MADDR +
+io32_t +H_WIDTH +
+io32_t +V_INTR +
+io32_t +CURR_LINE +
+io32_t +TIMING +
+io32_t +V_SYNC +
+io32_t +H_SYNC +
+io32_t +H_SYNC_LEAP +
+io32_t +H_LIMITS +
+io32_t +V_LIMITS +
+io32_t +COLOR_BURST +
+io32_t +H_SCALE +
+io32_t +V_SCALE +
+ +
+
+ +

◆ ai_regs_t

+ +
+
+ + + + +
struct ai_regs_t
+
+
+ + + + + + + + + + + + + + + + + + + +
Data Fields
+io32_t +MADDR +
+io32_t +LEN +
+io32_t +CR +
+io32_t +SR +
+io32_t +DACRATE +
+io32_t +BITRATE +
+ +
+
+ +

◆ pi_regs_t

+ +
+
+ + + + +
struct pi_regs_t
+
+

Parallel Interface Register Structure.

+
+ + + + + + + + + + + + + + + + + + + +
Data Fields
+io32_t +MADDR +
+io32_t +PADDR +
+io32_t +RDMA +
+io32_t +WDMA +
+io32_t +SR +
+struct pi_regs_t.DOM +DOM[2] +
+ +
+
+ +

◆ os_info_t

+ +
+
+ + + + +
struct os_info_t
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Data Fields
+uint32_t +tv_type +
+uint32_t +device_type +
+uint32_t +device_base +
+uint32_t +reset_type +
+uint32_t +cic_id +
+uint32_t +version +
+uint32_t +mem_size +
+uint8_t +app_nmi_buffer[64] +
+uint32_t +__reserved_1[37] +
+uint32_t +mem_size_6105 +
+ +
+
+ +

◆ pi_regs_t.DOM

+ +
+
+ + + + +
struct pi_regs_t.DOM
+
+
+ + + + + + + + + + + + + +
Data Fields
+io32_t +LAT +
+io32_t +PWD +
+io32_t +PGS +
+io32_t +RLS +
+ +
+
+
+ + + + diff --git a/boot__io_8h_source.html b/boot__io_8h_source.html new file mode 100644 index 00000000..1812fe4b --- /dev/null +++ b/boot__io_8h_source.html @@ -0,0 +1,327 @@ + + + + + + + +N64FlashcartMenu: boot_io.h Source File + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
boot_io.h
+
+
+Go to the documentation of this file.
1
+
7#ifndef BOOT_IO_H__
+
8#define BOOT_IO_H__
+
9
+
10
+
11#include <stddef.h>
+
12#include <stdint.h>
+
13
+
14
+
15typedef volatile uint8_t io8_t;
+
16typedef volatile uint32_t io32_t;
+
17
+
18
+
19#define UNCACHED(address) ((typeof(address)) (((io32_t) (address)) | (0xA0000000UL)))
+
20
+
21
+
22typedef struct {
+
23 io32_t DMEM[1024];
+
24 io32_t IMEM[1024];
+
25} sp_mem_t;
+
26
+
27#define SP_MEM_BASE (0x04000000UL)
+
28#define SP_MEM ((sp_mem_t *) SP_MEM_BASE)
+
29
+
30
+
31typedef struct {
+
32 io32_t PADDR;
+
33 io32_t MADDR;
+
34 io32_t RD_LEN;
+
35 io32_t WR_LEN;
+
36 io32_t SR;
+
37 io32_t DMA_FULL;
+
38 io32_t DMA_BUSY;
+
39 io32_t SEMAPHORE;
+
40} sp_regs_t;
+
41
+
42#define SP_BASE (0x04040000UL)
+
43#define SP ((sp_regs_t *) SP_BASE)
+
44
+
45#define SP_SR_HALT (1 << 0)
+
46#define SP_SR_BROKE (1 << 1)
+
47#define SP_SR_DMA_BUSY (1 << 2)
+
48#define SP_SR_DMA_FULL (1 << 3)
+
49#define SP_SR_IO_FULL (1 << 4)
+
50#define SP_SR_SSTEP (1 << 5)
+
51#define SP_SR_INTR_BREAK (1 << 6)
+
52#define SP_SR_SIG0 (1 << 7)
+
53#define SP_SR_SIG1 (1 << 8)
+
54#define SP_SR_SIG2 (1 << 9)
+
55#define SP_SR_SIG3 (1 << 10)
+
56#define SP_SR_SIG4 (1 << 11)
+
57#define SP_SR_SIG5 (1 << 12)
+
58#define SP_SR_SIG6 (1 << 13)
+
59#define SP_SR_SIG7 (1 << 14)
+
60#define SP_SR_CLR_HALT (1 << 0)
+
61#define SP_SR_SET_HALT (1 << 1)
+
62#define SP_SR_CLR_BROKE (1 << 2)
+
63#define SP_SR_CLR_INTR (1 << 3)
+
64#define SP_SR_SET_INTR (1 << 4)
+
65#define SP_SR_CLR_SSTEP (1 << 5)
+
66#define SP_SR_SET_SSTEP (1 << 6)
+
67#define SP_SR_CLR_INTR_BREAK (1 << 7)
+
68#define SP_SR_SET_INTR_BREAK (1 << 8)
+
69#define SP_SR_CLR_SIG0 (1 << 9)
+
70#define SP_SR_SET_SIG0 (1 << 10)
+
71#define SP_SR_CLR_SIG1 (1 << 11)
+
72#define SP_SR_SET_SIG1 (1 << 12)
+
73#define SP_SR_CLR_SIG2 (1 << 13)
+
74#define SP_SR_SET_SIG2 (1 << 14)
+
75#define SP_SR_CLR_SIG3 (1 << 15)
+
76#define SP_SR_SET_SIG3 (1 << 16)
+
77#define SP_SR_CLR_SIG4 (1 << 17)
+
78#define SP_SR_SET_SIG4 (1 << 18)
+
79#define SP_SR_CLR_SIG5 (1 << 19)
+
80#define SP_SR_SET_SIG5 (1 << 20)
+
81#define SP_SR_CLR_SIG6 (1 << 21)
+
82#define SP_SR_SET_SIG6 (1 << 22)
+
83#define SP_SR_CLR_SIG7 (1 << 23)
+
84#define SP_SR_SET_SIG7 (1 << 24)
+
85
+
86
+
88typedef struct {
+
89 io32_t START;
+
90 io32_t END;
+
91 io32_t CURRENT;
+
92 io32_t SR;
+
93 io32_t CLOCK;
+
94 io32_t BUF_BUSY;
+
95 io32_t PIPE_BUSY;
+
96 io32_t TMEM;
+ +
98
+
99#define DPC_BASE (0x04100000UL)
+
100#define DPC ((dpc_regs_t *) DPC_BASE)
+
101
+
102#define DPC_SR_XBUS_DMEM_DMA (1 << 0)
+
103#define DPC_SR_FREEZE (1 << 1)
+
104#define DPC_SR_FLUSH (1 << 2)
+
105#define DPC_SR_START_GCLK (1 << 3)
+
106#define DPC_SR_TMEM_BUSY (1 << 4)
+
107#define DPC_SR_PIPE_BUSY (1 << 5)
+
108#define DPC_SR_CMD_BUSY (1 << 6)
+
109#define DPC_SR_CBUF_READY (1 << 7)
+
110#define DPC_SR_DMA_BUSY (1 << 8)
+
111#define DPC_SR_END_VALID (1 << 9)
+
112#define DPC_SR_START_VALID (1 << 10)
+
113#define DPC_SR_CLR_XBUS_DMEM_DMA (1 << 0)
+
114#define DPC_SR_SET_XBUS_DMEM_DMA (1 << 1)
+
115#define DPC_SR_CLR_FREEZE (1 << 2)
+
116#define DPC_SR_SET_FREEZE (1 << 3)
+
117#define DPC_SR_CLR_FLUSH (1 << 4)
+
118#define DPC_SR_SET_FLUSH (1 << 5)
+
119#define DPC_SR_CLR_TMEM_CTR (1 << 6)
+
120#define DPC_SR_CLR_PIPE_CTR (1 << 7)
+
121#define DPC_SR_CLR_CMD_CTR (1 << 8)
+
122#define DPC_SR_CLR_CLOCK_CTR (1 << 9)
+
123
+
124
+
126typedef struct {
+
127 io32_t CR;
+
128 io32_t MADDR;
+
129 io32_t H_WIDTH;
+
130 io32_t V_INTR;
+
131 io32_t CURR_LINE;
+
132 io32_t TIMING;
+
133 io32_t V_SYNC;
+
134 io32_t H_SYNC;
+
135 io32_t H_SYNC_LEAP;
+
136 io32_t H_LIMITS;
+
137 io32_t V_LIMITS;
+
138 io32_t COLOR_BURST;
+
139 io32_t H_SCALE;
+
140 io32_t V_SCALE;
+
141} vi_regs_t;
+
142
+
143#define VI_BASE (0x04400000UL)
+
144#define VI ((vi_regs_t *) VI_BASE)
+
145
+
146#define VI_CR_TYPE_16 (2 << 0)
+
147#define VI_CR_TYPE_32 (3 << 0)
+
148#define VI_CR_GAMMA_DITHER_ON (1 << 2)
+
149#define VI_CR_GAMMA_ON (1 << 3)
+
150#define VI_CR_DIVOT_ON (1 << 4)
+
151#define VI_CR_SERRATE_ON (1 << 6)
+
152#define VI_CR_ANTIALIAS_0 (1 << 8)
+
153#define VI_CR_ANTIALIAS_1 (1 << 9)
+
154#define VI_CR_PIXEL_ADVANCE_0 (1 << 12)
+
155#define VI_CR_PIXEL_ADVANCE_1 (1 << 13)
+
156#define VI_CR_PIXEL_ADVANCE_2 (1 << 14)
+
157#define VI_CR_PIXEL_ADVANCE_3 (1 << 15)
+
158#define VI_CR_DITHER_FILTER_ON (1 << 16)
+
159
+
160
+
161typedef struct {
+
162 io32_t MADDR;
+
163 io32_t LEN;
+
164 io32_t CR;
+
165 io32_t SR;
+
166 io32_t DACRATE;
+
167 io32_t BITRATE;
+
168} ai_regs_t;
+
169
+
170#define AI_BASE (0x04500000UL)
+
171#define AI ((ai_regs_t *) AI_BASE)
+
172
+
173#define AI_SR_DMA_BUSY (1 << 30)
+
174#define AI_SR_FIFO_FULL (1 << 31)
+
175#define AI_CR_DMA_ON (1 << 0)
+
176
+
177
+
179typedef struct {
+
180 io32_t MADDR;
+
181 io32_t PADDR;
+
182 io32_t RDMA;
+
183 io32_t WDMA;
+
184 io32_t SR;
+
185 struct {
+
186 io32_t LAT;
+
187 io32_t PWD;
+
188 io32_t PGS;
+
189 io32_t RLS;
+
190 } DOM[2];
+
191} pi_regs_t;
+
192
+
193#define PI_BASE (0x04600000UL)
+
194#define PI ((pi_regs_t *) PI_BASE)
+
195
+
196#define PI_SR_DMA_BUSY (1 << 0)
+
197#define PI_SR_IO_BUSY (1 << 1)
+
198#define PI_SR_DMA_ERROR (1 << 2)
+
199#define PI_SR_RESET (1 << 0)
+
200#define PI_SR_CLR_INTR (1 << 1)
+
201
+
202
+
203#define ROM_DDIPL_BASE (0x06000000UL)
+
204#define ROM_DDIPL ((io32_t *) ROM_DDIPL_BASE)
+
205
+
206
+
207#define ROM_CART_BASE (0x10000000UL)
+
208#define ROM_CART ((io32_t *) ROM_CART_BASE)
+
209
+
210
+
211typedef struct {
+
212 uint32_t tv_type;
+
213 uint32_t device_type;
+
214 uint32_t device_base;
+
215 uint32_t reset_type;
+
216 uint32_t cic_id;
+
217 uint32_t version;
+
218 uint32_t mem_size;
+
219 uint8_t app_nmi_buffer[64];
+
220 uint32_t __reserved_1[37];
+
221 uint32_t mem_size_6105;
+
222} os_info_t;
+
223
+
224#define OS_INFO_BASE (0x80000300UL)
+
225#define OS_INFO ((os_info_t *) OS_INFO_BASE)
+
226
+
227#define OS_INFO_RESET_TYPE_COLD (0)
+
228#define OS_INFO_RESET_TYPE_NMI (1)
+
229
+
230
+
231static inline uint32_t cpu_io_read (io32_t *address) {
+
232 io32_t *uncached = UNCACHED(address);
+
233 uint32_t value = *uncached;
+
234 return value;
+
235}
+
236
+
237static inline void cpu_io_write (io32_t *address, uint32_t value) {
+
238 io32_t *uncached = UNCACHED(address);
+
239 *uncached = value;
+
240}
+
241
+
242
+
243#endif
+
Definition: boot_io.h:161
+
DPC Registers Structure.
Definition: boot_io.h:88
+
Definition: boot_io.h:211
+
Parallel Interface Register Structure.
Definition: boot_io.h:179
+
Definition: boot_io.h:22
+
Definition: boot_io.h:31
+
Video Interface Registers Structure.
Definition: boot_io.h:126
+
+ + + + diff --git a/classes.html b/classes.html new file mode 100644 index 00000000..ab7f74aa --- /dev/null +++ b/classes.html @@ -0,0 +1,123 @@ + + + + + + + +N64FlashcartMenu: Data Structure Index + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Data Structure Index
+
+
+
A | B | C | D | E | F | I | M | O | P | R | S | V
+ +
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 00000000..98cc2c90 Binary files /dev/null and b/closed.png differ diff --git a/components_8h.html b/components_8h.html new file mode 100644 index 00000000..e3714e40 --- /dev/null +++ b/components_8h.html @@ -0,0 +1,194 @@ + + + + + + + +N64FlashcartMenu: components.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
components.h File Reference
+
+
+ +

Menu Components. +More...

+ +

Go to the source code of this file.

+ + + + +

+Data Structures

struct  component_boxart_t
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+void component_box_draw (int x0, int y0, int x1, int y1, color_t color)
 
+void component_border_draw (int x0, int y0, int x1, int y1)
 
+void component_layout_draw (void)
 
+void component_progressbar_draw (int x0, int y0, int x1, int y1, float progress)
 
+void component_seekbar_draw (float progress)
 
+void component_loader_draw (float position)
 
+void component_scrollbar_draw (int x, int y, int width, int height, int position, int items, int visible_items)
 
+void component_file_list_scrollbar_draw (int position, int items, int visible_items)
 
+void component_dialog_draw (int width, int height)
 
+void component_messagebox_draw (char *fmt,...)
 
+void component_main_text_draw (rdpq_align_t align, rdpq_valign_t valign, char *fmt,...)
 
+void component_actions_bar_text_draw (rdpq_align_t align, rdpq_valign_t valign, char *fmt,...)
 
+void component_background_init (char *cache_location)
 
+void component_background_free (void)
 
+void component_background_replace_image (surface_t *image)
 
+void component_background_draw (void)
 
+void component_file_list_draw (entry_t *list, int entries, int selected)
 
+component_boxart_tcomponent_boxart_init (uint16_t id)
 
+void component_boxart_free (component_boxart_t *b)
 
+void component_boxart_draw (component_boxart_t *b)
 
+

Detailed Description

+

Menu Components.

+

Data Structure Documentation

+ +

◆ component_boxart_t

+ +
+
+ + + + +
struct component_boxart_t
+
+
+ + + + + + + +
Data Fields
+bool +loading +
+surface_t * +image +
+ +
+
+
+ + + + diff --git a/components_8h_source.html b/components_8h_source.html new file mode 100644 index 00000000..a98c7a24 --- /dev/null +++ b/components_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +N64FlashcartMenu: components.h Source File + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
components.h
+
+
+Go to the documentation of this file.
1
+
7#ifndef COMPONENTS_H__
+
8#define COMPONENTS_H__
+
9
+
10
+
11#include <libdragon.h>
+
12#include "menu_state.h"
+
13
+
14
+
20void component_box_draw (int x0, int y0, int x1, int y1, color_t color);
+
21void component_border_draw (int x0, int y0, int x1, int y1);
+
22void component_layout_draw (void);
+
23void component_progressbar_draw (int x0, int y0, int x1, int y1, float progress);
+
24void component_seekbar_draw (float progress);
+
25void component_loader_draw (float position);
+
26void component_scrollbar_draw (int x, int y, int width, int height, int position, int items, int visible_items);
+
27void component_file_list_scrollbar_draw (int position, int items, int visible_items);
+
28void component_dialog_draw (int width, int height);
+
29void component_messagebox_draw (char *fmt, ...);
+
30void component_main_text_draw (rdpq_align_t align, rdpq_valign_t valign, char *fmt, ...);
+
31void component_actions_bar_text_draw (rdpq_align_t align, rdpq_valign_t valign, char *fmt, ...);
+
32
+
33void component_background_init (char *cache_location);
+
34void component_background_free (void);
+
35void component_background_replace_image (surface_t *image);
+
36void component_background_draw (void);
+
37
+
38void component_file_list_draw (entry_t *list, int entries, int selected);
+
39
+
40typedef struct {
+
41 bool loading;
+
42 surface_t *image;
+ +
44
+
45component_boxart_t *component_boxart_init (uint16_t id);
+
46void component_boxart_free (component_boxart_t *b);
+
47void component_boxart_draw (component_boxart_t *b);
+
48 /* menu_components */
+
50
+
51
+
52#endif
+
Definition: components.h:40
+
Menu State.
+
File Entry Structure.
Definition: menu_state.h:47
+
+ + + + diff --git a/constants_8h.html b/constants_8h.html new file mode 100644 index 00000000..92263fc3 --- /dev/null +++ b/constants_8h.html @@ -0,0 +1,245 @@ + + + + + + + +N64FlashcartMenu: constants.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
constants.h File Reference
+
+
+ +

Menu components constants. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

+#define DISPLAY_WIDTH   (640)
 
+#define DISPLAY_HEIGHT   (480)
 
+#define DISPLAY_CENTER_X   (DISPLAY_WIDTH / 2)
 
+#define DISPLAY_CENTER_Y   (DISPLAY_HEIGHT / 2)
 
+#define OVERSCAN_WIDTH   (32)
 
+#define OVERSCAN_HEIGHT   (24)
 
+#define VISIBLE_AREA_X0   (OVERSCAN_WIDTH)
 
+#define VISIBLE_AREA_Y0   (OVERSCAN_HEIGHT)
 
+#define VISIBLE_AREA_X1   (DISPLAY_WIDTH - OVERSCAN_WIDTH)
 
+#define VISIBLE_AREA_Y1   (DISPLAY_HEIGHT - OVERSCAN_HEIGHT)
 
+#define VISIBLE_AREA_WIDTH   (VISIBLE_AREA_X1 - VISIBLE_AREA_X0)
 
+#define VISIBLE_AREA_HEIGHT   (VISIBLE_AREA_Y1 - VISIBLE_AREA_Y0)
 
+#define BORDER_THICKNESS   (4)
 
+#define LAYOUT_ACTIONS_SEPARATOR_Y   (400)
 
+#define SEEKBAR_HEIGHT   (24)
 
+#define SEEKBAR_WIDTH   (524)
 
+#define SEEKBAR_X   (DISPLAY_CENTER_X - (SEEKBAR_WIDTH / 2))
 
+#define SEEKBAR_Y   (VISIBLE_AREA_Y1 - SEEKBAR_HEIGHT - 80)
 
+#define LOADER_WIDTH   (320)
 
+#define LOADER_HEIGHT   (24)
 
+#define LOADER_X   (DISPLAY_CENTER_X - (LOADER_WIDTH / 2))
 
+#define LOADER_Y   (DISPLAY_CENTER_Y - (LOADER_HEIGHT / 2))
 
+#define MESSAGEBOX_MAX_WIDTH   (360)
 
+#define MESSAGEBOX_MARGIN   (32)
 
+#define TEXT_MARGIN_HORIZONTAL   (10)
 
+#define TEXT_MARGIN_VERTICAL   (7)
 
+#define BOXART_WIDTH   (158)
 
+#define BOXART_HEIGHT   (112)
 
+#define BOXART_X   (VISIBLE_AREA_X1 - BOXART_WIDTH - 24)
 
+#define BOXART_Y   (LAYOUT_ACTIONS_SEPARATOR_Y - BOXART_HEIGHT - 24)
 
+#define FILE_LIST_SCROLLBAR_WIDTH   (12)
 
+#define FILE_LIST_SCROLLBAR_HEIGHT   (LAYOUT_ACTIONS_SEPARATOR_Y - OVERSCAN_HEIGHT)
 
+#define FILE_LIST_SCROLLBAR_X   (VISIBLE_AREA_X1 - FILE_LIST_SCROLLBAR_WIDTH)
 
+#define FILE_LIST_SCROLLBAR_Y   (VISIBLE_AREA_Y0)
 
+#define FILE_LIST_ENTRIES   (20)
 
+#define FILE_LIST_MAX_WIDTH   (480)
 
+#define FILE_LIST_HIGHLIGHT_WIDTH   (VISIBLE_AREA_X1 - VISIBLE_AREA_X0 - FILE_LIST_SCROLLBAR_WIDTH)
 
+#define FILE_LIST_HIGHLIGHT_X   (VISIBLE_AREA_X0)
 
+#define BACKGROUND_EMPTY_COLOR   RGBA32(0x00, 0x00, 0x00, 0xFF)
 
+#define BACKGROUND_OVERLAY_COLOR   RGBA32(0x00, 0x00, 0x00, 0xA0)
 
+#define BORDER_COLOR   RGBA32(0xFF, 0xFF, 0xFF, 0xFF)
 
+#define PROGRESSBAR_BG_COLOR   RGBA32(0x00, 0x00, 0x00, 0xFF)
 
+#define PROGRESSBAR_DONE_COLOR   RGBA32(0x3B, 0x7C, 0xF5, 0xFF)
 
+#define SCROLLBAR_BG_COLOR   RGBA32(0x3F, 0x3F, 0x3F, 0xFF)
 
+#define SCROLLBAR_INACTIVE_COLOR   RGBA32(0x5F, 0x5F, 0x5F, 0xFF)
 
+#define SCROLLBAR_POSITION_COLOR   RGBA32(0x7F, 0x7F, 0x7F, 0xFF)
 
+#define DIALOG_BG_COLOR   RGBA32(0x00, 0x00, 0x00, 0xFF)
 
+#define BOXART_LOADING_COLOR   RGBA32(0x3F, 0x3F, 0x3F, 0xFF)
 
+#define FILE_LIST_HIGHLIGHT_COLOR   RGBA32(0x3F, 0x3F, 0x3F, 0xFF)
 
+

Detailed Description

+

Menu components constants.

+
+ + + + diff --git a/constants_8h_source.html b/constants_8h_source.html new file mode 100644 index 00000000..e971e072 --- /dev/null +++ b/constants_8h_source.html @@ -0,0 +1,163 @@ + + + + + + + +N64FlashcartMenu: constants.h Source File + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
constants.h
+
+
+Go to the documentation of this file.
1
+
7#ifndef COMPONENTS_CONSTANTS_H__
+
8#define COMPONENTS_CONSTANTS_H__
+
9
+
10
+
11#define DISPLAY_WIDTH (640)
+
12#define DISPLAY_HEIGHT (480)
+
13
+
14#define DISPLAY_CENTER_X (DISPLAY_WIDTH / 2)
+
15#define DISPLAY_CENTER_Y (DISPLAY_HEIGHT / 2)
+
16
+
17#define OVERSCAN_WIDTH (32)
+
18#define OVERSCAN_HEIGHT (24)
+
19
+
20#define VISIBLE_AREA_X0 (OVERSCAN_WIDTH)
+
21#define VISIBLE_AREA_Y0 (OVERSCAN_HEIGHT)
+
22#define VISIBLE_AREA_X1 (DISPLAY_WIDTH - OVERSCAN_WIDTH)
+
23#define VISIBLE_AREA_Y1 (DISPLAY_HEIGHT - OVERSCAN_HEIGHT)
+
24
+
25#define VISIBLE_AREA_WIDTH (VISIBLE_AREA_X1 - VISIBLE_AREA_X0)
+
26#define VISIBLE_AREA_HEIGHT (VISIBLE_AREA_Y1 - VISIBLE_AREA_Y0)
+
27
+
28#define BORDER_THICKNESS (4)
+
29
+
30#define LAYOUT_ACTIONS_SEPARATOR_Y (400)
+
31
+
32#define SEEKBAR_HEIGHT (24)
+
33#define SEEKBAR_WIDTH (524)
+
34#define SEEKBAR_X (DISPLAY_CENTER_X - (SEEKBAR_WIDTH / 2))
+
35#define SEEKBAR_Y (VISIBLE_AREA_Y1 - SEEKBAR_HEIGHT - 80)
+
36
+
37#define LOADER_WIDTH (320)
+
38#define LOADER_HEIGHT (24)
+
39#define LOADER_X (DISPLAY_CENTER_X - (LOADER_WIDTH / 2))
+
40#define LOADER_Y (DISPLAY_CENTER_Y - (LOADER_HEIGHT / 2))
+
41
+
42#define MESSAGEBOX_MAX_WIDTH (360)
+
43#define MESSAGEBOX_MARGIN (32)
+
44
+
45#define TEXT_MARGIN_HORIZONTAL (10)
+
46#define TEXT_MARGIN_VERTICAL (7)
+
47
+
48#define BOXART_WIDTH (158)
+
49#define BOXART_HEIGHT (112)
+
50#define BOXART_X (VISIBLE_AREA_X1 - BOXART_WIDTH - 24)
+
51#define BOXART_Y (LAYOUT_ACTIONS_SEPARATOR_Y - BOXART_HEIGHT - 24)
+
52
+
53#define FILE_LIST_SCROLLBAR_WIDTH (12)
+
54#define FILE_LIST_SCROLLBAR_HEIGHT (LAYOUT_ACTIONS_SEPARATOR_Y - OVERSCAN_HEIGHT)
+
55#define FILE_LIST_SCROLLBAR_X (VISIBLE_AREA_X1 - FILE_LIST_SCROLLBAR_WIDTH)
+
56#define FILE_LIST_SCROLLBAR_Y (VISIBLE_AREA_Y0)
+
57
+
58#define FILE_LIST_ENTRIES (20)
+
59#define FILE_LIST_MAX_WIDTH (480)
+
60#define FILE_LIST_HIGHLIGHT_WIDTH (VISIBLE_AREA_X1 - VISIBLE_AREA_X0 - FILE_LIST_SCROLLBAR_WIDTH)
+
61#define FILE_LIST_HIGHLIGHT_X (VISIBLE_AREA_X0)
+
62
+
63
+
64#define BACKGROUND_EMPTY_COLOR RGBA32(0x00, 0x00, 0x00, 0xFF)
+
65#define BACKGROUND_OVERLAY_COLOR RGBA32(0x00, 0x00, 0x00, 0xA0)
+
66
+
67#define BORDER_COLOR RGBA32(0xFF, 0xFF, 0xFF, 0xFF)
+
68
+
69#define PROGRESSBAR_BG_COLOR RGBA32(0x00, 0x00, 0x00, 0xFF)
+
70#define PROGRESSBAR_DONE_COLOR RGBA32(0x3B, 0x7C, 0xF5, 0xFF)
+
71
+
72#define SCROLLBAR_BG_COLOR RGBA32(0x3F, 0x3F, 0x3F, 0xFF)
+
73#define SCROLLBAR_INACTIVE_COLOR RGBA32(0x5F, 0x5F, 0x5F, 0xFF)
+
74#define SCROLLBAR_POSITION_COLOR RGBA32(0x7F, 0x7F, 0x7F, 0xFF)
+
75
+
76#define DIALOG_BG_COLOR RGBA32(0x00, 0x00, 0x00, 0xFF)
+
77
+
78#define BOXART_LOADING_COLOR RGBA32(0x3F, 0x3F, 0x3F, 0xFF)
+
79
+
80#define FILE_LIST_HIGHLIGHT_COLOR RGBA32(0x3F, 0x3F, 0x3F, 0xFF)
+
81
+
82
+
83#endif
+
+ + + + diff --git a/crc32_8h.html b/crc32_8h.html new file mode 100644 index 00000000..064e903f --- /dev/null +++ b/crc32_8h.html @@ -0,0 +1,101 @@ + + + + + + + +N64FlashcartMenu: crc32.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
crc32.h File Reference
+
+
+ +

Flashcart Boot Checksum. +More...

+ +

Go to the source code of this file.

+ + + + +

+Functions

+uint32_t crc32_calculate (void *buffer, size_t length)
 
+

Detailed Description

+

Flashcart Boot Checksum.

+
+ + + + diff --git a/crc32_8h_source.html b/crc32_8h_source.html new file mode 100644 index 00000000..ab7a8e4c --- /dev/null +++ b/crc32_8h_source.html @@ -0,0 +1,98 @@ + + + + + + + +N64FlashcartMenu: crc32.h Source File + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
crc32.h
+
+
+Go to the documentation of this file.
1
+
7#ifndef CRC32_H__
+
8#define CRC32_H__
+
9
+
10
+
11#include <stddef.h>
+
12#include <stdint.h>
+
13
+
14
+
15uint32_t crc32_calculate (void *buffer, size_t length);
+
16
+
17
+
18#endif
+
+ + + + diff --git a/dir_1a56cc8cdc1689899910be5fa4716ee4.html b/dir_1a56cc8cdc1689899910be5fa4716ee4.html new file mode 100644 index 00000000..db24713d --- /dev/null +++ b/dir_1a56cc8cdc1689899910be5fa4716ee4.html @@ -0,0 +1,124 @@ + + + + + + + +N64FlashcartMenu: menu Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
menu Directory Reference
+
+
+ + + + + + +

+Directories

directory  components
 
directory  views
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  actions.h [code]
 Menu Actions.
 
file  components.h [code]
 Menu Components.
 
file  fonts.h [code]
 Menu fonts.
 
file  menu.h [code]
 Menu Subsystem.
 
file  menu_state.h [code]
 Menu State.
 
file  mp3_player.h [code]
 
file  path.h [code]
 Menu Path.
 
file  png_decoder.h [code]
 
file  rom_database.h [code]
 N64 ROM Database.
 
file  settings.h [code]
 Menu Settings.
 
+
+ + + + diff --git a/dir_313caf1132e152dd9b58bea13a4052ca.html b/dir_313caf1132e152dd9b58bea13a4052ca.html new file mode 100644 index 00000000..f0ecc8e9 --- /dev/null +++ b/dir_313caf1132e152dd9b58bea13a4052ca.html @@ -0,0 +1,93 @@ + + + + + + + +N64FlashcartMenu: utils Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
utils Directory Reference
+
+
+ + + + + + +

+Files

file  fs.h [code]
 
file  utils.h [code]
 
+
+ + + + diff --git a/dir_4ad298de6e9dc10146d0378a1888b2cb.html b/dir_4ad298de6e9dc10146d0378a1888b2cb.html new file mode 100644 index 00000000..7de20c18 --- /dev/null +++ b/dir_4ad298de6e9dc10146d0378a1888b2cb.html @@ -0,0 +1,93 @@ + + + + + + + +N64FlashcartMenu: sc64 Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
sc64 Directory Reference
+
+
+ + + + + + +

+Files

file  sc64.h [code]
 
file  sc64_internal.h [code]
 
+
+ + + + diff --git a/dir_52780cb445d9f0b97a98e8aabec4d968.html b/dir_52780cb445d9f0b97a98e8aabec4d968.html new file mode 100644 index 00000000..a2710cbf --- /dev/null +++ b/dir_52780cb445d9f0b97a98e8aabec4d968.html @@ -0,0 +1,98 @@ + + + + + + + +N64FlashcartMenu: boot Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
boot Directory Reference
+
+
+ + + + + + + + + + + +

+Files

file  boot.h [code]
 Flashcart Boot Subsystem.
 
file  boot_io.h [code]
 Flashcart Boot IO.
 
file  crc32.h [code]
 Flashcart Boot Checksum.
 
+
+ + + + diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 00000000..abb25f5c --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,97 @@ + + + + + + + +N64FlashcartMenu: src Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
src Directory Reference
+
+
+ + + + + + + + + + +

+Directories

directory  boot
 
directory  flashcart
 
directory  menu
 
directory  utils
 
+
+ + + + diff --git a/dir_a2193b6f8ca8748b0e3b26a8265ce7c7.html b/dir_a2193b6f8ca8748b0e3b26a8265ce7c7.html new file mode 100644 index 00000000..1dc2b8ff --- /dev/null +++ b/dir_a2193b6f8ca8748b0e3b26a8265ce7c7.html @@ -0,0 +1,92 @@ + + + + + + + +N64FlashcartMenu: components Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
components Directory Reference
+
+
+ + + + + +

+Files

file  constants.h [code]
 Menu components constants.
 
+
+ + + + diff --git a/dir_abdc04f88b2866c1353f358c089205e4.html b/dir_abdc04f88b2866c1353f358c089205e4.html new file mode 100644 index 00000000..12bfa4f9 --- /dev/null +++ b/dir_abdc04f88b2866c1353f358c089205e4.html @@ -0,0 +1,100 @@ + + + + + + + +N64FlashcartMenu: flashcart Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
flashcart Directory Reference
+
+
+ + + + +

+Directories

directory  sc64
 
+ + + + + + + +

+Files

file  flashcart.h [code]
 Flashcart Subsystem.
 
file  flashcart_utils.h [code]
 Flashcart utilities.
 
+
+ + + + diff --git a/dir_fc7b276aa2f26a1d485b93ff01d7cabb.html b/dir_fc7b276aa2f26a1d485b93ff01d7cabb.html new file mode 100644 index 00000000..ea942e99 --- /dev/null +++ b/dir_fc7b276aa2f26a1d485b93ff01d7cabb.html @@ -0,0 +1,92 @@ + + + + + + + +N64FlashcartMenu: views Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
views Directory Reference
+
+
+ + + + + +

+Files

file  views.h [code]
 Menu Views.
 
+
+ + + + diff --git a/doc.png b/doc.png new file mode 100644 index 00000000..17edabff Binary files /dev/null and b/doc.png differ diff --git a/docd.png b/docd.png new file mode 100644 index 00000000..d7c94fda Binary files /dev/null and b/docd.png differ diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 00000000..89dee6c4 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1973 @@ +/* The standard CSS for doxygen 1.9.5*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.png'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.png'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: black; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 10px; + width: 10px; +} +::-webkit-scrollbar-thumb { + background-color: var(--scrollbar-thumb-color); + border-radius: 8px; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: underline; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: visible; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid var(--fragment-border-color); + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: var(--font-family-monospace); + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + color: var(--fragment-foreground-color); + background-color: var(--fragment-background-color); + border: 1px solid var(--fragment-border-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: var(--memdef-param-name-color); + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 00000000..d42dad52 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 00000000..f579fbf3 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,123 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +N64FlashcartMenu: File List + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  src
  boot
 boot.hFlashcart Boot Subsystem
 boot_io.hFlashcart Boot IO
 crc32.hFlashcart Boot Checksum
  flashcart
  sc64
 sc64.h
 sc64_internal.h
 flashcart.hFlashcart Subsystem
 flashcart_utils.hFlashcart utilities
  menu
  components
 constants.hMenu components constants
  views
 views.hMenu Views
 actions.hMenu Actions
 components.hMenu Components
 fonts.hMenu fonts
 menu.hMenu Subsystem
 menu_state.hMenu State
 mp3_player.h
 path.hMenu Path
 png_decoder.h
 rom_database.hN64 ROM Database
 settings.hMenu Settings
  utils
 fs.h
 utils.h
+
+
+ + + + diff --git a/flashcart_8h.html b/flashcart_8h.html new file mode 100644 index 00000000..3b54821e --- /dev/null +++ b/flashcart_8h.html @@ -0,0 +1,157 @@ + + + + + + + +N64FlashcartMenu: flashcart.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
flashcart.h File Reference
+
+
+ +

Flashcart Subsystem. +More...

+ +

Go to the source code of this file.

+ + + + + +

+Data Structures

struct  flashcart_t
 Flashcart Structure. More...
 
+ + + +

+Typedefs

+typedef void flashcart_progress_callback_t(float progress)
 
+ + + + + + + +

+Enumerations

enum  flashcart_error_t {
+  FLASHCART_OK +, FLASHCART_ERROR_NOT_DETECTED +, FLASHCART_ERROR_OUTDATED +, FLASHCART_ERROR_SD_CARD +,
+  FLASHCART_ERROR_ARGS +, FLASHCART_ERROR_LOAD +, FLASHCART_ERROR_INT +
+ }
 Flashcart error enumeration.
 
enum  flashcart_save_type_t {
+  FLASHCART_SAVE_TYPE_NONE +, FLASHCART_SAVE_TYPE_EEPROM_4K +, FLASHCART_SAVE_TYPE_EEPROM_16K +, FLASHCART_SAVE_TYPE_SRAM +,
+  FLASHCART_SAVE_TYPE_SRAM_BANKED +, FLASHCART_SAVE_TYPE_SRAM_128K +, FLASHCART_SAVE_TYPE_FLASHRAM +, __FLASHCART_SAVE_TYPE_END +
+ }
 Flashcart save type enumeration.
 
+ + + + + + + + + +

+Functions

+flashcart_error_t flashcart_init (void)
 
+flashcart_error_t flashcart_deinit (void)
 
+flashcart_error_t flashcart_load_rom (char *rom_path, bool byte_swap, flashcart_progress_callback_t *progress)
 
+flashcart_error_t flashcart_load_save (char *save_path, flashcart_save_type_t save_type)
 
+

Detailed Description

+

Flashcart Subsystem.

+

SC64 Flashcart Internal Utilities.

+

SC64 Flashcart Utilities.

+
+ + + + diff --git a/flashcart_8h_source.html b/flashcart_8h_source.html new file mode 100644 index 00000000..4ec1b99e --- /dev/null +++ b/flashcart_8h_source.html @@ -0,0 +1,137 @@ + + + + + + + +N64FlashcartMenu: flashcart.h Source File + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
flashcart.h
+
+
+Go to the documentation of this file.
1
+
7#ifndef FLASHCART_H__
+
8#define FLASHCART_H__
+
9
+
10
+
11#include <stdbool.h>
+
12#include <stdint.h>
+
13
+
14
+
16typedef enum {
+
17 FLASHCART_OK,
+
18 FLASHCART_ERROR_NOT_DETECTED,
+
19 FLASHCART_ERROR_OUTDATED,
+
20 FLASHCART_ERROR_SD_CARD,
+
21 FLASHCART_ERROR_ARGS,
+
22 FLASHCART_ERROR_LOAD,
+
23 FLASHCART_ERROR_INT,
+ +
25
+
27typedef enum {
+
28 FLASHCART_SAVE_TYPE_NONE,
+
29 FLASHCART_SAVE_TYPE_EEPROM_4K,
+
30 FLASHCART_SAVE_TYPE_EEPROM_16K,
+
31 FLASHCART_SAVE_TYPE_SRAM,
+
32 FLASHCART_SAVE_TYPE_SRAM_BANKED,
+
33 FLASHCART_SAVE_TYPE_SRAM_128K,
+
34 FLASHCART_SAVE_TYPE_FLASHRAM,
+
35 __FLASHCART_SAVE_TYPE_END
+ +
37
+
38typedef void flashcart_progress_callback_t (float progress);
+
39
+
41typedef struct {
+
42 flashcart_error_t (*init) (void);
+
43 flashcart_error_t (*deinit) (void);
+
44 flashcart_error_t (*load_rom) (char *rom_path, flashcart_progress_callback_t *progress);
+
45 flashcart_error_t (*load_save) (char *save_path);
+
46 flashcart_error_t (*set_save_type) (flashcart_save_type_t save_type);
+
47 flashcart_error_t (*set_save_writeback) (uint32_t *sectors);
+ +
49
+
50
+
51flashcart_error_t flashcart_init (void);
+
52flashcart_error_t flashcart_deinit (void);
+
53flashcart_error_t flashcart_load_rom (char *rom_path, bool byte_swap, flashcart_progress_callback_t *progress);
+
54flashcart_error_t flashcart_load_save (char *save_path, flashcart_save_type_t save_type);
+
55
+
56
+
57#endif
+
flashcart_error_t
Flashcart error enumeration.
Definition: flashcart.h:16
+
flashcart_save_type_t
Flashcart save type enumeration.
Definition: flashcart.h:27
+
Flashcart Structure.
Definition: flashcart.h:41
+
+ + + + diff --git a/flashcart__utils_8h.html b/flashcart__utils_8h.html new file mode 100644 index 00000000..b7e38f41 --- /dev/null +++ b/flashcart__utils_8h.html @@ -0,0 +1,107 @@ + + + + + + + +N64FlashcartMenu: flashcart_utils.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
flashcart_utils.h File Reference
+
+
+ +

Flashcart utilities. +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Functions

+void fix_file_size (FIL *fil)
 
+void pi_dma_read_data (void *src, void *dst, size_t length)
 
+void pi_dma_write_data (void *src, void *dst, size_t length)
 
+

Detailed Description

+

Flashcart utilities.

+
+ + + + diff --git a/flashcart__utils_8h_source.html b/flashcart__utils_8h_source.html new file mode 100644 index 00000000..baa55d3f --- /dev/null +++ b/flashcart__utils_8h_source.html @@ -0,0 +1,99 @@ + + + + + + + +N64FlashcartMenu: flashcart_utils.h Source File + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
flashcart_utils.h
+
+
+Go to the documentation of this file.
1
+
7#ifndef FLASHCART_UTILS_H__
+
8#define FLASHCART_UTILS_H__
+
9
+
10
+
11#include <fatfs/ff.h>
+
12
+
13
+
14void fix_file_size (FIL *fil);
+
15void pi_dma_read_data (void *src, void *dst, size_t length);
+
16void pi_dma_write_data (void *src, void *dst, size_t length);
+
17
+
18
+
19#endif
+
+ + + + diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 00000000..bb8ab35e Binary files /dev/null and b/folderclosed.png differ diff --git a/folderopen.png b/folderopen.png new file mode 100644 index 00000000..d6c7f676 Binary files /dev/null and b/folderopen.png differ diff --git a/fonts_8h.html b/fonts_8h.html new file mode 100644 index 00000000..2f96c21d --- /dev/null +++ b/fonts_8h.html @@ -0,0 +1,118 @@ + + + + + + + +N64FlashcartMenu: fonts.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+ +
fonts.h File Reference
+
+
+ +

Menu fonts. +More...

+ +

Go to the source code of this file.

+ + + + + + +

+Enumerations

enum  menu_font_type_t { FNT_DEFAULT = 1 + }
 
enum  menu_font_style_t {
+  STL_DEFAULT = 0 +, STL_DIRECTORY +, STL_SAVE +, STL_MEDIA +,
+  STL_UNKNOWN +
+ }
 
+ + + +

+Functions

+void fonts_init (void)
 
+

Detailed Description

+

Menu fonts.

+
+ + + + diff --git a/fonts_8h_source.html b/fonts_8h_source.html new file mode 100644 index 00000000..9af0b20a --- /dev/null +++ b/fonts_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +N64FlashcartMenu: fonts.h Source File + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
fonts.h
+
+
+Go to the documentation of this file.
1
+
7#ifndef FONTS_H__
+
8#define FONTS_H__
+
9
+
10
+
11typedef enum {
+
12 FNT_DEFAULT = 1,
+
13} menu_font_type_t;
+
14
+
15typedef enum {
+
16 STL_DEFAULT = 0,
+
17 STL_DIRECTORY,
+
18 STL_SAVE,
+
19 STL_MEDIA,
+
20 STL_UNKNOWN,
+
21} menu_font_style_t;
+
22
+
23
+
24void fonts_init (void);
+
25
+
26
+
27#endif
+
+ + + + diff --git a/fs_8h_source.html b/fs_8h_source.html new file mode 100644 index 00000000..5dbe8e8c --- /dev/null +++ b/fs_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +N64FlashcartMenu: fs.h Source File + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + + +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+
fs.h
+
+
+
1#ifndef UTILS_FS_H__
+
2#define UTILS_FS_H__
+
3
+
4
+
5#include <stdbool.h>
+
6#include <stddef.h>
+
7#include <stdint.h>
+
8
+
9
+
10#define FS_SECTOR_SIZE (512)
+
11
+
12
+
13char *strip_sd_prefix (char *path);
+
14
+
15bool file_exists (char *path);
+
16size_t file_get_size (char *path);
+
17bool file_delete (char *path);
+
18bool file_allocate (char *path, size_t size);
+
19bool file_get_sectors (char *path, uint32_t *sectors, size_t entries);
+
20bool file_has_extensions (char *path, const char *extensions[]);
+
21
+
22bool directory_exists (char *path);
+
23bool directory_delete (char *path);
+
24bool directory_create (char *path);
+
25
+
26
+
27#endif
+
+ + + + diff --git a/functions.html b/functions.html new file mode 100644 index 00000000..38c6c810 --- /dev/null +++ b/functions.html @@ -0,0 +1,93 @@ + + + + + + + +N64FlashcartMenu: Data Fields + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented struct and union fields with links to the struct/union documentation for each field:
+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 00000000..7f1541e7 --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,93 @@ + + + + + + + +N64FlashcartMenu: Data Fields - Variables + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+ + + + diff --git a/globals.html b/globals.html new file mode 100644 index 00000000..318c608a --- /dev/null +++ b/globals.html @@ -0,0 +1,181 @@ + + + + + + + +N64FlashcartMenu: Globals + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation:
+ +

- b -

    +
  • boot_device_type_t : boot.h
  • +
  • boot_reset_type_t : boot.h
  • +
  • boot_tv_type_t : boot.h
  • +
+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- h -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- r -

+
+ + + + diff --git a/globals_enum.html b/globals_enum.html new file mode 100644 index 00000000..e6f46ef9 --- /dev/null +++ b/globals_enum.html @@ -0,0 +1,93 @@ + + + + + + + +N64FlashcartMenu: Globals + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+ + + + diff --git a/globals_eval.html b/globals_eval.html new file mode 100644 index 00000000..df50a33a --- /dev/null +++ b/globals_eval.html @@ -0,0 +1,155 @@ + + + + + + + +N64FlashcartMenu: Globals + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- d -

+ + +

- h -

+ + +

- i -

+ + +

- m -

+ + +

- n -

+ + +

- r -

+
+ + + + diff --git a/globals_func.html b/globals_func.html new file mode 100644 index 00000000..4ef3549a --- /dev/null +++ b/globals_func.html @@ -0,0 +1,81 @@ + + + + + + + +N64FlashcartMenu: Globals + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+ + + + diff --git a/group__sc64.html b/group__sc64.html new file mode 100644 index 00000000..13e4c3bc --- /dev/null +++ b/group__sc64.html @@ -0,0 +1,266 @@ + + + + + + + +N64FlashcartMenu: Sc64 + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ + + + +

+Data Structures

struct  sc64_buffers_t
 
+ + + + + +

+Macros

+#define SC64_BUFFERS_BASE   (0x1FFE0000UL)
 
+#define SC64_BUFFERS   ((sc64_buffers_t *) SC64_BUFFERS_BASE)
 
+ + + + + + + + + + + + + + + + + + + + + +

+Enumerations

enum  sc64_error_t {
+  SC64_OK +, SC64_ERROR_BAD_ARGUMENT +, SC64_ERROR_BAD_ADDRESS +, SC64_ERROR_BAD_CONFIG_ID +,
+  SC64_ERROR_TIMEOUT +, SC64_ERROR_SD_CARD +, SC64_ERROR_UNKNOWN_CMD = -1 +
+ }
 
enum  sc64_cfg_t {
+  CFG_BOOTLOADER_SWITCH +, CFG_ROM_WRITE_ENABLE +, CFG_ROM_SHADOW_ENABLE +, CFG_DD_MODE +,
+  CFG_ISV_ADDRESS +, CFG_BOOT_MODE +, CFG_SAVE_TYPE +, CFG_CIC_SEED +,
+  CFG_TV_TYPE +, CFG_DD_SD_ENABLE +, CFG_DD_DRIVE_TYPE +, CFG_DD_DISK_STATE +,
+  CFG_BUTTON_STATE +, CFG_BUTTON_MODE +, CFG_ROM_EXTENDED_ENABLE +
+ }
 
enum  sc64_dd_mode_t { DD_MODE_DISABLED = 0 +, DD_MODE_REGS = 1 +, DD_MODE_IPL = 2 +, DD_MODE_FULL = 3 + }
 
enum  sc64_boot_mode_t {
+  BOOT_MODE_MENU = 0 +, BOOT_MODE_ROM = 1 +, BOOT_MODE_DDIPL = 2 +, BOOT_MODE_DIRECT_ROM = 3 +,
+  BOOT_MODE_DIRECT_DDIPL = 4 +
+ }
 
enum  sc64_save_type_t {
+  SAVE_TYPE_NONE +, SAVE_TYPE_EEPROM_4K +, SAVE_TYPE_EEPROM_16K +, SAVE_TYPE_SRAM +,
+  SAVE_TYPE_FLASHRAM +, SAVE_TYPE_SRAM_BANKED +, SAVE_TYPE_SRAM_128K +
+ }
 
enum  sc64_cic_seed_t { CIC_SEED_AUTO = 0xFFFF + }
 
enum  sc64_tv_type_t { TV_TYPE_PAL = 0 +, TV_TYPE_NTSC = 1 +, TV_TYPE_MPAL = 2 +, TV_TYPE_PASSTHROUGH = 3 + }
 
enum  sc64_drive_type_t { DRIVE_TYPE_RETAIL +, DRIVE_TYPE_DEVELOPMENT + }
 
enum  sc64_disk_state_t { DISK_STATE_EJECTED +, DISK_STATE_INSERTED +, DISK_STATE_CHANGED + }
 
enum  sc64_button_mode_t { BUTTON_MODE_NONE +, BUTTON_MODE_N64_IRQ +, BUTTON_MODE_USB_PACKET +, BUTTON_MODE_DD_DISK_SWAP + }
 
+ + + + + + + + + + + + + + + + + + + + + +

+Functions

+flashcart_tsc64_get_flashcart (void)
 
+void sc64_lock (void)
 
+sc64_error_t sc64_get_version (uint16_t *major, uint16_t *minor, uint32_t *revision)
 
+sc64_error_t sc64_get_config (sc64_cfg_t cfg, uint32_t *value)
 
+sc64_error_t sc64_set_config (sc64_cfg_t cfg, uint32_t value)
 
+sc64_error_t sc64_writeback_pending (bool *pending)
 
+sc64_error_t sc64_writeback_enable (void *address)
 
+sc64_error_t sc64_flash_wait_busy (void)
 
+sc64_error_t sc64_flash_get_erase_block_size (size_t *erase_block_size)
 
+sc64_error_t sc64_flash_erase_block (void *address)
 
+

Detailed Description

+

Data Structure Documentation

+ +

◆ sc64_buffers_t

+ +
+
+ + + + +
struct sc64_buffers_t
+
+
+ + + + + + + + + + + + + +
Data Fields
+uint8_t +BUFFER[8192] +
+uint8_t +EEPROM[2048] +
+uint8_t +DD_SECTOR[256] +
+uint8_t +FLASHRAM[128] +
+ +
+
+
+ + + + diff --git a/group__view.html b/group__view.html new file mode 100644 index 00000000..450a3a6b --- /dev/null +++ b/group__view.html @@ -0,0 +1,151 @@ + + + + + + + +N64FlashcartMenu: View + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
View
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+void view_startup_init (menu_t *menu)
 
+void view_startup_display (menu_t *menu, surface_t *display)
 
+void view_browser_init (menu_t *menu)
 
+void view_browser_display (menu_t *menu, surface_t *display)
 
+void view_system_info_init (menu_t *menu)
 
+void view_system_info_display (menu_t *menu, surface_t *display)
 
+void view_file_info_init (menu_t *menu)
 
+void view_file_info_display (menu_t *menu, surface_t *display)
 
+void view_image_viewer_init (menu_t *menu)
 
+void view_image_viewer_display (menu_t *menu, surface_t *display)
 
+void view_music_player_init (menu_t *menu)
 
+void view_music_player_display (menu_t *menu, surface_t *display)
 
+void view_credits_init (menu_t *menu)
 
+void view_credits_display (menu_t *menu, surface_t *display)
 
+void view_load_init (menu_t *menu)
 
+void view_load_display (menu_t *menu, surface_t *display)
 
+void view_error_init (menu_t *menu)
 
+void view_error_display (menu_t *menu, surface_t *display)
 
+void view_fault_init (menu_t *menu)
 
+void view_fault_display (menu_t *menu, surface_t *display)
 
+void menu_show_error (menu_t *menu, char *error_message)
 
+

Detailed Description

+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 00000000..856c936a --- /dev/null +++ b/index.html @@ -0,0 +1,144 @@ + + + + + + + +N64FlashcartMenu: N64 Flashcart Menu + + + + + + + + + +
+
+ + + + + + +
+
N64FlashcartMenu +
+
+
+ + + + + + + +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
N64 Flashcart Menu
+
+
+

This repo and its documentation is currently experimental and subject to change without notice.

+

+Aims

+
    +
  • Support as many N64 FlashCarts as possible.
  • +
  • Be open source, using permissive licensed third party licensed libraries.
  • +
  • Be testable, using unit and smoke tests in ares emulated environment.
  • +
  • Encourage active development from community members and N64 FlashCart owners.
  • +
  • Support as many common mods and features as possible.
  • +
+

+Getting started

+

+SC64

+

Download the sc64menu.n64 ROM from the latest action run assets. Add it to the root folder on your SD card.

+

+ED64

+

Currently not supported, but there is an aim to do so. The aim is to replace Altra64 and ED64-UnofficialOS.

+

+Common to all

+

+ROM Boxart

+

To use boxart, you need to place png files of size 158x112 in the folder sd://menu/boxart/ Each file must be named according to the 2 letter ROM ID. e.g. for goldeneye, this would be GE.png A known set of PNG files can be downloaded from https://mega.nz/file/6cNGwSqI#8X5ukb65n3YMlGaUtSOGXkKo9HxVnnMOgqn94Epcr7w

+

+Developer documentation

+

Work in progress!

+

You can use a dev container in VSCode to ease development.

+

+To deploy:

+

+SC64

+
    +
  • Download the deployer here
  • +
  • Extract and place sc64deployer.exe in the tools/sc64 directory.
  • +
+

Make sure that your firmware is compatible (currently v2.16.0+) See: https://github.com/Polprzewodnikowy/SummerCart64/blob/v2.16.0/docs/00_quick_startup_guide.md#firmware-backupupdate

+

+From the devcontainer

+

It is not currently possible to directly communicate with USB devices. BUT, as a work around you can use a proxy TCP/IP connection Set up a proxy: open a terminal window, cd ./tools/sc64 and then ./sc64deployer.exe server

+

Then in the dev container, use make run or make run-debug

+

+From your host (Windows) OS

+
    +
  • Run ./localdeploy.bat from the terminal
  • +
+

Toggle the N64 power switch to load the ROM.

+

ms-vscode.makefile-tools will help (installed automatically in dev container). TODO: it does not yet work with F5: see https://devblogs.microsoft.com/cppblog/now-announcing-makefile-support-in-visual-studio-code/ WORKAROUND: in the dev container terminal, use make directly, i.e.: make The ROM can be found in the output directory.

+

NOTE: a "release" version of the SC64 menu is called sc64menu.n64 and can be created for when you want to add it directly to the SDCard. This is generated by running make all or running make sc64.

+

+Update Libdragon submodule

+

This repo currently uses the unstable branch as a submodule at a specific commit. To update to the latest version, use git submodule update --remote from the terminal.

+

+Generate documentation

+

Run doxygen from the dev container terminal. Make sure you fix the warnings before creating a PR! Generated documentation is located in output/docs folder.

+

+OSS licenses used for libraries

+
    +
  • UNLICENSE (libdragon)
  • +
  • BSD 2-Clause (libspng)
  • +
  • CC0 1.0 Universal (minimp3)
  • +
  • Permissive, unspecific (miniz)
  • +
+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 00000000..1dffb65b --- /dev/null +++ b/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/menu.js b/menu.js new file mode 100644 index 00000000..b0b26936 --- /dev/null +++ b/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menu_8h.html b/menu_8h.html new file mode 100644 index 00000000..32dfd02c --- /dev/null +++ b/menu_8h.html @@ -0,0 +1,101 @@ + + + + + + + +N64FlashcartMenu: menu.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    menu.h File Reference
    +
    +
    + +

    Menu Subsystem. +More...

    + +

    Go to the source code of this file.

    + + + + +

    +Functions

    +void menu_run (boot_params_t *boot_params)
     
    +

    Detailed Description

    +

    Menu Subsystem.

    +
    + + + + diff --git a/menu_8h_source.html b/menu_8h_source.html new file mode 100644 index 00000000..1ac6bb2e --- /dev/null +++ b/menu_8h_source.html @@ -0,0 +1,99 @@ + + + + + + + +N64FlashcartMenu: menu.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    menu.h
    +
    +
    +Go to the documentation of this file.
    1
    +
    7#ifndef MENU_H__
    +
    8#define MENU_H__
    +
    9
    +
    10
    +
    11#include "boot/boot.h"
    +
    12
    +
    13
    +
    14void menu_run (boot_params_t *boot_params);
    +
    15
    +
    16
    +
    17#endif
    +
    Flashcart Boot Subsystem.
    +
    Boot Parameters Structure.
    Definition: boot.h:36
    +
    + + + + diff --git a/menu__state_8h.html b/menu__state_8h.html new file mode 100644 index 00000000..f1ca3604 --- /dev/null +++ b/menu__state_8h.html @@ -0,0 +1,389 @@ + + + + + + + +N64FlashcartMenu: menu_state.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    menu_state.h File Reference
    +
    +
    + +

    Menu State. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + +

    +Data Structures

    struct  entry_t
     File Entry Structure. More...
     
    struct  menu_t
     Menu Structure. More...
     
    struct  menu_t.actions
     
    struct  menu_t.browser
     
    + + + +

    +Macros

    +#define BROWSER_LIST_SIZE   2048
     
    + + + + + + + +

    +Enumerations

    enum  menu_mode_t {
    +  MENU_MODE_NONE +, MENU_MODE_STARTUP +, MENU_MODE_BROWSER +, MENU_MODE_FILE_INFO +,
    +  MENU_MODE_SYSTEM_INFO +, MENU_MODE_IMAGE_VIEWER +, MENU_MODE_MUSIC_PLAYER +, MENU_MODE_CREDITS +,
    +  MENU_MODE_LOAD +, MENU_MODE_ERROR +, MENU_MODE_FAULT +, MENU_MODE_BOOT +
    + }
     Menu mode enumeration.
     
    enum  entry_type_t {
    +  ENTRY_TYPE_DIR +, ENTRY_TYPE_ROM +, ENTRY_TYPE_SAVE +, ENTRY_TYPE_IMAGE +,
    +  ENTRY_TYPE_MUSIC +, ENTRY_TYPE_OTHER +
    + }
     File entry type enumeration.
     
    +

    Detailed Description

    +

    Menu State.

    +

    Data Structure Documentation

    + +

    ◆ entry_t

    + +
    +
    + + + + +
    struct entry_t
    +
    +

    File Entry Structure.

    +
    + + + + + + + + + + +
    Data Fields
    +char * +name +
    +entry_type_t +type +
    +int +size +
    + +
    +
    + +

    ◆ menu_t

    + +
    +
    + + + + +
    struct menu_t
    +
    +

    Menu Structure.

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +menu_mode_t +mode +
    +menu_mode_t +next_mode +
    +settings_t +settings +
    +boot_params_t * +boot_params +
    +flashcart_error_t +flashcart_error +
    +char * +error_message +
    +struct menu_t.actions +actions +
    +struct menu_t.browser +browser +
    + +
    +
    + +

    ◆ menu_t.actions

    + +
    +
    + + + + +
    struct menu_t.actions
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +bool +go_up +
    +bool +go_down +
    +bool +go_left +
    +bool +go_right +
    +bool +fast +
    +int +vertical_held_counter +
    +int +horizontal_held_counter +
    +bool +enter +
    +bool +back +
    +bool +file_info +
    +bool +system_info +
    +bool +settings +
    + +
    +
    + +

    ◆ menu_t.browser

    + +
    +
    + + + + +
    struct menu_t.browser
    +
    +
    + + + + + + + + + + + + + + + + +
    Data Fields
    +bool +valid +
    +path_t * +directory +
    +entry_t +list[BROWSER_LIST_SIZE] +
    +int +entries +
    +int +selected +
    + +
    +
    +
    + + + + diff --git a/menu__state_8h_source.html b/menu__state_8h_source.html new file mode 100644 index 00000000..786ceb8c --- /dev/null +++ b/menu__state_8h_source.html @@ -0,0 +1,178 @@ + + + + + + + +N64FlashcartMenu: menu_state.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    menu_state.h
    +
    +
    +Go to the documentation of this file.
    1
    +
    7#ifndef MENU_STRUCT_H__
    +
    8#define MENU_STRUCT_H__
    +
    9
    +
    10
    +
    11#include "boot/boot.h"
    +
    12#include "flashcart/flashcart.h"
    +
    13#include "path.h"
    +
    14#include "settings.h"
    +
    15
    +
    16
    +
    17#define BROWSER_LIST_SIZE 2048
    +
    18
    +
    19
    +
    21typedef enum {
    +
    22 MENU_MODE_NONE,
    +
    23 MENU_MODE_STARTUP,
    +
    24 MENU_MODE_BROWSER,
    +
    25 MENU_MODE_FILE_INFO,
    +
    26 MENU_MODE_SYSTEM_INFO,
    +
    27 MENU_MODE_IMAGE_VIEWER,
    +
    28 MENU_MODE_MUSIC_PLAYER,
    +
    29 MENU_MODE_CREDITS,
    +
    30 MENU_MODE_LOAD,
    +
    31 MENU_MODE_ERROR,
    +
    32 MENU_MODE_FAULT,
    +
    33 MENU_MODE_BOOT,
    + +
    35
    +
    37typedef enum {
    +
    38 ENTRY_TYPE_DIR,
    +
    39 ENTRY_TYPE_ROM,
    +
    40 ENTRY_TYPE_SAVE,
    +
    41 ENTRY_TYPE_IMAGE,
    +
    42 ENTRY_TYPE_MUSIC,
    +
    43 ENTRY_TYPE_OTHER,
    + +
    45
    +
    47typedef struct {
    +
    48 char *name;
    +
    49 entry_type_t type;
    +
    50 int size;
    +
    51} entry_t;
    +
    52
    +
    54typedef struct {
    +
    55 menu_mode_t mode;
    +
    56 menu_mode_t next_mode;
    +
    57
    +
    58 settings_t settings;
    +
    59 boot_params_t *boot_params;
    +
    60 flashcart_error_t flashcart_error;
    +
    61
    +
    62 char *error_message;
    +
    63
    +
    64 struct {
    +
    65 bool go_up;
    +
    66 bool go_down;
    +
    67 bool go_left;
    +
    68 bool go_right;
    +
    69 bool fast;
    +
    70 int vertical_held_counter;
    +
    71 int horizontal_held_counter;
    +
    72
    +
    73 bool enter;
    +
    74 bool back;
    +
    75 bool file_info;
    +
    76 bool system_info;
    +
    77 bool settings;
    +
    78 } actions;
    +
    79
    +
    80 struct {
    +
    81 bool valid;
    +
    82 path_t *directory;
    +
    83 entry_t list[BROWSER_LIST_SIZE];
    +
    84 int entries;
    +
    85 int selected;
    +
    86 } browser;
    +
    87} menu_t;
    +
    88
    +
    89
    +
    90#endif
    +
    Flashcart Boot Subsystem.
    +
    Boot Parameters Structure.
    Definition: boot.h:36
    +
    Flashcart Subsystem.
    +
    flashcart_error_t
    Flashcart error enumeration.
    Definition: flashcart.h:16
    +
    entry_type_t
    File entry type enumeration.
    Definition: menu_state.h:37
    +
    menu_mode_t
    Menu mode enumeration.
    Definition: menu_state.h:21
    +
    File Entry Structure.
    Definition: menu_state.h:47
    +
    Menu Structure.
    Definition: menu_state.h:54
    +
    Menu Path.
    +
    Path Structure.
    Definition: path.h:15
    +
    Menu Settings.
    +
    Settings Structure.
    Definition: settings.h:12
    +
    + + + + diff --git a/menudata.js b/menudata.js new file mode 100644 index 00000000..1494560b --- /dev/null +++ b/menudata.js @@ -0,0 +1,55 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Modules",url:"modules.html"}, +{text:"Data Structures",url:"annotated.html",children:[ +{text:"Data Structures",url:"annotated.html"}, +{text:"Data Structure Index",url:"classes.html"}, +{text:"Data Fields",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"Globals",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"b",url:"globals.html#index_b"}, +{text:"d",url:"globals.html#index_d"}, +{text:"e",url:"globals.html#index_e"}, +{text:"f",url:"globals.html#index_f"}, +{text:"h",url:"globals.html#index_h"}, +{text:"i",url:"globals.html#index_i"}, +{text:"m",url:"globals.html#index_m"}, +{text:"n",url:"globals.html#index_n"}, +{text:"r",url:"globals.html#index_r"}]}, +{text:"Functions",url:"globals_func.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html",children:[ +{text:"d",url:"globals_eval.html#index_d"}, +{text:"h",url:"globals_eval.html#index_h"}, +{text:"i",url:"globals_eval.html#index_i"}, +{text:"m",url:"globals_eval.html#index_m"}, +{text:"n",url:"globals_eval.html#index_n"}, +{text:"r",url:"globals_eval.html#index_r"}]}]}]}]} diff --git a/modules.html b/modules.html new file mode 100644 index 00000000..fca0dd29 --- /dev/null +++ b/modules.html @@ -0,0 +1,87 @@ + + + + + + + +N64FlashcartMenu: Modules + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Modules
    +
    +
    +
    Here is a list of all modules:
    + + + +
     Sc64
     View
    +
    +
    + + + + diff --git a/mp3__player_8h_source.html b/mp3__player_8h_source.html new file mode 100644 index 00000000..37483c44 --- /dev/null +++ b/mp3__player_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +N64FlashcartMenu: mp3_player.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    mp3_player.h
    +
    +
    +
    1
    +
    7#ifndef MP3_PLAYER_H__
    +
    8#define MP3_PLAYER_H__
    +
    9
    +
    10
    +
    11#include <stdbool.h>
    +
    12
    +
    13
    +
    15typedef enum {
    +
    16 MP3PLAYER_OK,
    +
    17 MP3PLAYER_ERR_OUT_OF_MEM,
    +
    18 MP3PLAYER_ERR_IO,
    +
    19 MP3PLAYER_ERR_NO_FILE,
    +
    20 MP3PLAYER_ERR_INVALID_FILE,
    +
    21} mp3player_err_t;
    +
    22
    +
    23
    +
    24void mp3player_mixer_init (void);
    +
    25mp3player_err_t mp3player_init (void);
    +
    26void mp3player_deinit (void);
    +
    27mp3player_err_t mp3player_load (char *path);
    +
    28void mp3player_unload (void);
    +
    29mp3player_err_t mp3player_process (void);
    +
    30bool mp3player_is_playing (void);
    +
    31bool mp3player_is_finished (void);
    +
    32mp3player_err_t mp3player_play (void);
    +
    33void mp3player_stop (void);
    +
    34mp3player_err_t mp3player_toggle (void);
    +
    35void mp3player_mute (bool mute);
    +
    36mp3player_err_t mp3player_seek (int seconds);
    +
    37float mp3player_get_duration (void);
    +
    38float mp3player_get_bitrate (void);
    +
    39int mp3player_get_samplerate (void);
    +
    40float mp3player_get_progress (void);
    +
    41
    +
    42
    +
    43#endif
    +
    + + + + diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 00000000..72a58a52 Binary files /dev/null and b/nav_f.png differ diff --git a/nav_fd.png b/nav_fd.png new file mode 100644 index 00000000..032fbdd4 Binary files /dev/null and b/nav_fd.png differ diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 00000000..2093a237 Binary files /dev/null and b/nav_g.png differ diff --git a/nav_h.png b/nav_h.png new file mode 100644 index 00000000..33389b10 Binary files /dev/null and b/nav_h.png differ diff --git a/nav_hd.png b/nav_hd.png new file mode 100644 index 00000000..de80f18a Binary files /dev/null and b/nav_hd.png differ diff --git a/open.png b/open.png new file mode 100644 index 00000000..30f75c7e Binary files /dev/null and b/open.png differ diff --git a/path_8h.html b/path_8h.html new file mode 100644 index 00000000..c51841c5 --- /dev/null +++ b/path_8h.html @@ -0,0 +1,175 @@ + + + + + + + +N64FlashcartMenu: path.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    path.h File Reference
    +
    +
    + +

    Menu Path. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  path_t
     Path Structure. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +path_tpath_init (char *string)
     
    +void path_free (path_t *path)
     
    +path_tpath_clone (path_t *string)
     
    +char * path_get (path_t *path)
     
    +char * path_last_get (path_t *path)
     
    +bool path_is_root (path_t *path)
     
    +void path_append (path_t *path, char *string)
     
    +void path_concat (path_t *dst, path_t *str)
     
    +void path_push (path_t *path, char *string)
     
    +void path_pop (path_t *path)
     
    +char * path_ext_get (path_t *path)
     
    +void path_ext_remove (path_t *path)
     
    +void path_ext_replace (path_t *path, char *ext)
     
    +

    Detailed Description

    +

    Menu Path.

    +

    Data Structure Documentation

    + +

    ◆ path_t

    + +
    +
    + + + + +
    struct path_t
    +
    +

    Path Structure.

    +
    + + + + + + + +
    Data Fields
    +char * +buffer +
    +size_t +capacity +
    + +
    +
    +
    + + + + diff --git a/path_8h_source.html b/path_8h_source.html new file mode 100644 index 00000000..c36122bc --- /dev/null +++ b/path_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +N64FlashcartMenu: path.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    path.h
    +
    +
    +Go to the documentation of this file.
    1
    +
    7#ifndef PATH_H__
    +
    8#define PATH_H__
    +
    9
    +
    10
    +
    11#include <stdbool.h>
    +
    12
    +
    13
    +
    15typedef struct {
    +
    16 char *buffer;
    +
    17 size_t capacity;
    +
    18} path_t;
    +
    19
    +
    20
    +
    21path_t *path_init (char *string);
    +
    22void path_free (path_t *path);
    +
    23path_t *path_clone (path_t *string);
    +
    24char *path_get (path_t *path);
    +
    25char *path_last_get (path_t *path);
    +
    26bool path_is_root (path_t *path);
    +
    27void path_append (path_t *path, char *string);
    +
    28void path_concat (path_t *dst, path_t *str);
    +
    29void path_push (path_t *path, char *string);
    +
    30void path_pop (path_t *path);
    +
    31char *path_ext_get (path_t *path);
    +
    32void path_ext_remove (path_t *path);
    +
    33void path_ext_replace (path_t *path, char *ext);
    +
    34
    +
    35
    +
    36#endif
    +
    Path Structure.
    Definition: path.h:15
    +
    + + + + diff --git a/png__decoder_8h_source.html b/png__decoder_8h_source.html new file mode 100644 index 00000000..c88d87e2 --- /dev/null +++ b/png__decoder_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +N64FlashcartMenu: png_decoder.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    png_decoder.h
    +
    +
    +
    1
    +
    7#ifndef PNG_DECODER_H__
    +
    8#define PNG_DECODER_H__
    +
    9
    +
    10
    +
    11#include <surface.h>
    +
    12
    +
    13
    +
    15typedef enum {
    +
    16 PNG_OK,
    +
    17 PNG_ERR_INT,
    +
    18 PNG_ERR_BUSY,
    +
    19 PNG_ERR_OUT_OF_MEM,
    +
    20 PNG_ERR_NO_FILE,
    +
    21 PNG_ERR_BAD_FILE,
    +
    22} png_err_t;
    +
    23
    +
    24typedef void png_callback_t (png_err_t err, surface_t *decoded_image, void *callback_data);
    +
    25
    +
    26
    +
    27png_err_t png_decoder_start (char *path, int max_width, int max_height, png_callback_t *callback, void *callback_data);
    +
    28void png_decoder_abort (void);
    +
    29float png_decoder_get_progress (void);
    +
    30void png_decoder_poll (void);
    +
    31
    +
    32
    +
    33#endif
    +
    + + + + diff --git a/rom__database_8h.html b/rom__database_8h.html new file mode 100644 index 00000000..8fe144ae --- /dev/null +++ b/rom__database_8h.html @@ -0,0 +1,634 @@ + + + + + + + +N64FlashcartMenu: rom_database.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    rom_database.h File Reference
    +
    +
    + +

    N64 ROM Database. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + +

    +Data Structures

    struct  rom_config_flags_t
     ROM Config Flags Structure. More...
     
    struct  rom_header_t
     ROM Header Structure. More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Enumerations

    enum  db_savetype_t {
    +  DB_SAVE_TYPE_NONE = 0x00 +, DB_SAVE_TYPE_EEPROM_4K = 0x01 +, DB_SAVE_TYPE_EEPROM_16K = 0x02 +, DB_SAVE_TYPE_SRAM = 0x03 +,
    +  DB_SAVE_TYPE_SRAM_BANKED = 0x04 +, DB_SAVE_TYPE_SRAM_128K = 0x05 +, DB_SAVE_TYPE_FLASHRAM = 0x06 +, DB_SAVE_TYPE_CPAK = 0x10 +,
    +  DB_SAVE_TYPE_DD = 0x20 +, DB_SAVE_TYPE_DD_CONVERSION = 0x30 +, DB_SAVE_TYPE_INVALID = 0xFF +
    + }
     ROM database save type enumeration. More...
     
    enum  rom_memorytype_t {
    +  DB_MEMORY_EXPANSION_NONE = 0x00 +, DB_MEMORY_EXPANSION_REQUIRED = 0x01 +, DB_MEMORY_EXPANSION_RECOMMENDED = 0x02 +, DB_MEMORY_EXPANSION_SUGGESTED = 0x03 +,
    +  DB_MEMORY_EXPANSION_FAULTY = 0x04 +
    + }
     ROM system memory requirements enumeration. More...
     
    enum  homebrew_savetype_t {
    +  HB_SAVE_TYPE_NONE = 0x00 +, HB_SAVE_TYPE_EEPROM_4K = 0x01 +, HB_SAVE_TYPE_EEPROM_16K = 0x02 +, HB_SAVE_TYPE_SRAM = 0x03 +,
    +  HB_SAVE_TYPE_SRAM_BANKED = 0x04 +, HB_SAVE_TYPE_FLASHRAM = 0x05 +, HB_SAVE_TYPE_SRAM_128K = 0x06 +
    + }
     ROM homebrew save type enumeration. More...
     
    enum  rom_endian_type_t {
    +  ROM_BIG_ENDIAN = 0x80371240 +, ROM_LITTLE_ENDIAN = 0x40123780 +, ROM_MID_BIG_ENDIAN = 0x37804012 +, ROM_MID_LITTLE_ENDIAN = 0x12408037 +,
    +  IPL_BIG_ENDIAN = 0x80270740 +
    + }
     ROM file endian enumeration. More...
     
    enum  rom_media_type_t {
    +  N64_CART = 'N' +, N64_DISK = 'D' +, N64_CART_EXPANDABLE = 'C' +, N64_DISK_EXPANDABLE = 'E' +,
    +  N64_ALECK64 = 'Z' +
    + }
     ROM media type enumeration. More...
     
    enum  rom_destination_market_t {
    +  MARKET_ALL = 'A' +, MARKET_BRAZIL = 'B' +, MARKET_CHINA = 'C' +, MARKET_GERMANY = 'D' +,
    +  MARKET_USA = 'E' +, MARKET_FRANCE = 'F' +, MARKET_GATEWAY64_NTSC = 'G' +, MARKET_NETHERLANDS = 'H' +,
    +  MARKET_ITALY = 'I' +, MARKET_JAPAN = 'J' +, MARKET_KOREA = 'K' +, MARKET_GATEWAY64_PAL = 'L' +,
    +  MARKET_CANADA = 'N' +, MARKET_PAL_GENERIC = 'P' +, MARKET_SPAIN = 'S' +, MARKET_AUSTRAILA = 'U' +,
    +  MARKET_SCANDINAVAIA = 'W' +, MARKET_PAL_X = 'X' +, MARKET_PAL_Y = 'Y' +, MARKET_PAL_Z = 'Z' +
    + }
     ROM market type enumeration. More...
     
    + + + + + + + + +

    +Functions

    rom_header_t file_read_rom_header (char *path)
     Reads the N64 ROM header from a file. More...
     
    +uint8_t rom_db_match_save_type (rom_header_t rom_header)
     
    +uint8_t rom_db_match_expansion_pak (rom_header_t rom_header)
     
    +

    Detailed Description

    +

    N64 ROM Database.

    +
    Note
    Only works with N64 ROM's by checking the first 1024 bytes of the file.
    +

    Data Structure Documentation

    + +

    ◆ rom_config_flags_t

    + +
    +
    + + + + +
    struct rom_config_flags_t
    +
    +

    ROM Config Flags Structure.

    +
    Note
    This information is derived from the ROM header.
    +
    See also
    https://n64brew.dev/wiki/Peripheral_Interface#Domains i.e. 0x00 = PI BSD Domain 1 Release register 0x01 = PI BSD Domain 1 Page Size register 0x02 = PI BSD Domain 1 Pulse Width register 0x03 = PI BSD Domain 1 Latch register
    +
    + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +domain1_release +
    +uint8_t +domain1_page_size +
    +uint8_t +domain1_latency +
    +uint8_t +domain1_pulse_width +
    + +
    +
    + +

    ◆ rom_metadata_t

    + +
    +
    + + + + +
    struct rom_metadata_t
    +
    +

    ROM Metadata Structure.

    +
    Note
    This information is derived from the ROM header. i.e. 0x3B = Media Type 0x3C and 0x3D = Unique Identifier 0x3E = Destination Market
    +
    + + + + + + + + + + + + + +
    Data Fields
    +uint8_t +media_type +
    +uint16_t +unique_identifier +
    +uint8_t +destination_market +
    +uint8_t +version +
    + +
    +
    + +

    ◆ rom_header_t

    + +
    +
    + + + + +
    struct rom_header_t
    +
    +

    ROM Header Structure.

    +
    Note
    This information is derived from the ROM header.
    +
    See also
    https://n64brew.dev/wiki/ROM_Header
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Data Fields
    +uint32_t +config_flags +The ROM configuration flags.
    Note
    we currently use this to work out the endian
    +
    See also
    rom_endian_type_t.
    +
    +uint32_t +clock_rate +The ROM file clock rate.
    +uint32_t +boot_address +The ROM file boot address.
    +uint32_t +sdk_version +The ROM file SDK version.
    +uint64_t +checksum +The ROM file checksum.
    +uint64_t +unknown_reserved_1 +The ROM file unknown reserved region at 0x18. for 8 bytes.
    +char +title[21] +The ROM file title.
    +char +unknown_reserved_2[7] +The ROM file unknown reserved region at 0x34. for 7 bytes.
    +rom_metadata_t +metadata +The ROM file metadata.
    See also
    rom_metadata_t.
    +
    +char +ipl_boot_code[0x0FC0] +The ROM file release version.
    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ db_savetype_t

    + +
    +
    + + + + +
    enum db_savetype_t
    +
    + +

    ROM database save type enumeration.

    +
    Note
    These values are independent of flashcart / OS but by default align to SC64.
    + + + + + + + + + + + + +
    Enumerator
    DB_SAVE_TYPE_NONE 

    The ROM has no save type.

    +
    DB_SAVE_TYPE_EEPROM_4K 

    The ROM uses EEPROM 4K saves.

    +
    DB_SAVE_TYPE_EEPROM_16K 

    The ROM uses EEPROM 16K saves.

    +
    DB_SAVE_TYPE_SRAM 

    The ROM uses SRAM saves.

    +
    DB_SAVE_TYPE_SRAM_BANKED 

    The ROM uses SRAM Banked saves.

    +
    DB_SAVE_TYPE_SRAM_128K 

    The ROM uses SRAM 128K saves.

    +
    Note
    This is not supported by all flashcarts.
    +
    DB_SAVE_TYPE_FLASHRAM 

    The ROM uses FLASHRAM saves.

    +
    DB_SAVE_TYPE_CPAK 

    The ROM uses CPAK saves.

    +
    Note
    This must be handled by user code.
    +
    DB_SAVE_TYPE_DD 

    The ROM uses Disk Drive saves.

    +
    Note
    This is not supported by all flashcarts.
    +
    DB_SAVE_TYPE_DD_CONVERSION 

    The ROM uses Disk Drive conversion saves.

    +
    Note
    This must be handled by user code.
    +
    DB_SAVE_TYPE_INVALID 

    The ROM uses a save type that was not recognised.

    +
    + +
    +
    + +

    ◆ rom_memorytype_t

    + +
    +
    + + + + +
    enum rom_memorytype_t
    +
    + +

    ROM system memory requirements enumeration.

    + + + + + + +
    Enumerator
    DB_MEMORY_EXPANSION_NONE 

    The ROM is happy with 4MB of memory.

    +
    DB_MEMORY_EXPANSION_REQUIRED 

    The ROM requires 8MB of memory.

    +
    DB_MEMORY_EXPANSION_RECOMMENDED 

    The ROM recommends 8MB of memory.

    +
    DB_MEMORY_EXPANSION_SUGGESTED 

    The ROM suggests 8MB of memory.

    +
    DB_MEMORY_EXPANSION_FAULTY 

    The ROM is faulty when using 8MB of memory.

    +
    + +
    +
    + +

    ◆ homebrew_savetype_t

    + +
    +
    + + + + +
    enum homebrew_savetype_t
    +
    + +

    ROM homebrew save type enumeration.

    +
    Note
    These align to the Krikzz ED64 save types and are generally accepted by all emulators.
    + + + + + + + + +
    Enumerator
    HB_SAVE_TYPE_NONE 

    The ROM has no save type.

    +
    HB_SAVE_TYPE_EEPROM_4K 

    The ROM uses EEPROM 4K saves.

    +
    HB_SAVE_TYPE_EEPROM_16K 

    The ROM uses EEPROM 16K saves.

    +
    HB_SAVE_TYPE_SRAM 

    The ROM uses SRAM saves.

    +
    HB_SAVE_TYPE_SRAM_BANKED 

    The ROM uses SRAM Banked saves.

    +
    HB_SAVE_TYPE_FLASHRAM 

    The ROM uses FLASHRAM saves.

    +
    HB_SAVE_TYPE_SRAM_128K 

    The ROM uses SRAM 128K saves.

    +
    Note
    This is not supported by all flashcarts.
    +
    + +
    +
    + +

    ◆ rom_endian_type_t

    + +
    +
    + + + + +
    enum rom_endian_type_t
    +
    + +

    ROM file endian enumeration.

    +
    Note
    this is a hack used for checking ROM's against expected Big Endian when reading from the file system.
    + + + + + + +
    Enumerator
    ROM_BIG_ENDIAN 

    Big Endian ROM.

    +
    ROM_LITTLE_ENDIAN 

    Little Endian ROM.

    +
    ROM_MID_BIG_ENDIAN 

    Mid Big Endian ROM.

    +
    ROM_MID_LITTLE_ENDIAN 

    Mid Little Endian ROM.

    +
    IPL_BIG_ENDIAN 

    Big Endian IPL ROM.

    +
    + +
    +
    + +

    ◆ rom_media_type_t

    + +
    +
    + + + + +
    enum rom_media_type_t
    +
    + +

    ROM media type enumeration.

    + + + + + + +
    Enumerator
    N64_CART 

    Is a stand alone Cartridge program.

    +
    N64_DISK 

    Is a stand alone Disk Drive program.

    +
    N64_CART_EXPANDABLE 

    Is a Cartridge program that could use an extra Disk Drive program to expand its capabilities.

    +
    N64_DISK_EXPANDABLE 

    Is a Disk Drive program that could use an extra Cartridge program to expand its capabilities.

    +
    N64_ALECK64 

    Is an Aleck64 program.

    +
    + +
    +
    + +

    ◆ rom_destination_market_t

    + +
    +
    + + + + +
    enum rom_destination_market_t
    +
    + +

    ROM market type enumeration.

    + + + + + + + + + + + + + + + + + + + + + +
    Enumerator
    MARKET_ALL 

    The ROM is designed for all regions.

    +
    MARKET_BRAZIL 

    The ROM is designed for Brazil (probably PAL-M).

    +
    MARKET_CHINA 

    The ROM is designed for China (probably PAL-D).

    +
    MARKET_GERMANY 

    The ROM is designed for Germany (probably PAL).

    +
    MARKET_USA 

    The ROM is designed for USA. (probably NTSC-M)

    +
    MARKET_FRANCE 

    The ROM is designed for France (probably PAL).

    +
    MARKET_GATEWAY64_NTSC 

    The ROM is designed for a NTSC Gateway 64.

    +
    MARKET_NETHERLANDS 

    The ROM is designed for Netherlands (probably PAL).

    +
    MARKET_ITALY 

    The ROM is designed for Italy (probably PAL).

    +
    MARKET_JAPAN 

    The ROM is designed for Japan. (probably NTSC-J)

    +
    MARKET_KOREA 

    The ROM is designed for Korea.

    +
    MARKET_GATEWAY64_PAL 

    The ROM is designed for a PAL Gateway 64.

    +
    MARKET_CANADA 

    The ROM is designed for Canada.

    +
    MARKET_PAL_GENERIC 

    The ROM is designed for all PAL regions.

    +
    MARKET_SPAIN 

    The ROM is designed for Spain (probably PAL).

    +
    MARKET_AUSTRAILA 

    The ROM is designed for Australia (probably PAL).

    +
    MARKET_SCANDINAVAIA 

    The ROM is designed for Scandinavia.

    +
    MARKET_PAL_X 

    The ROM is designed for a PAL market (just unsure which and why).

    +
    MARKET_PAL_Y 

    The ROM is designed for a PAL market (just unsure which and why).

    +
    MARKET_PAL_Z 

    The ROM is designed for a PAL market (just unsure which and why).

    +
    + +
    +
    +

    Function Documentation

    + +

    ◆ file_read_rom_header()

    + +
    +
    + + + + + + + + +
    rom_header_t file_read_rom_header (char * path)
    +
    + +

    Reads the N64 ROM header from a file.

    +
    See also
    https://n64brew.dev/wiki/ROM_Header
    + +
    +
    +
    + + + + diff --git a/rom__database_8h_source.html b/rom__database_8h_source.html new file mode 100644 index 00000000..01a28666 --- /dev/null +++ b/rom__database_8h_source.html @@ -0,0 +1,294 @@ + + + + + + + +N64FlashcartMenu: rom_database.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    rom_database.h
    +
    +
    +Go to the documentation of this file.
    1
    +
    8#ifndef ROM_DATABASE_H__
    +
    9#define ROM_DATABASE_H__
    +
    10
    +
    11#include <stdint.h>
    +
    12
    +
    13
    +
    19typedef enum {
    + + + + + + + + + + + + +
    43
    +
    44
    +
    46typedef enum {
    + + + + + + +
    58
    +
    59
    +
    66typedef enum {
    + + + + + + + + +
    82
    +
    89typedef enum {
    +
    91 ROM_BIG_ENDIAN = 0x80371240,
    +
    93 ROM_LITTLE_ENDIAN = 0x40123780,
    +
    95 ROM_MID_BIG_ENDIAN = 0x37804012,
    + +
    99 IPL_BIG_ENDIAN = 0x80270740,
    + +
    101
    +
    102
    +
    104typedef enum {
    +
    106 N64_CART = 'N',
    +
    108 N64_DISK = 'D',
    + + +
    114 N64_ALECK64 = 'Z'
    + +
    116
    +
    118typedef enum {
    + + + + + + + + + + + + +
    143 // MARKET_UNKNOWN_M = 'M',
    + +
    146 // MARKET_UNKNOWN_O = 'O',
    + +
    149 // MARKET_UNKNOWN_Q = 'Q',
    +
    150 // MARKET_UNKNOWN_R = 'R',
    + +
    153 // MARKET_UNKNOWN_T = 'T',
    + +
    156 // MARKET_UNKNOWN_V = 'V',
    + + + +
    164 MARKET_PAL_Z = 'Z'
    + +
    166
    +
    167
    +
    178typedef struct {
    +
    179 /* PI BSD Domain 1 Release register value */
    +
    180 uint8_t domain1_release;
    +
    181 /* PI BSD Domain 1 Page Size register value */
    +
    182 uint8_t domain1_page_size;
    +
    183 /* PI BSD Domain 1 Pulse Width register value */
    +
    184 uint8_t domain1_latency;
    +
    185 /* PI BSD Domain 1 Latch register value */
    +
    186 uint8_t domain1_pulse_width;
    + +
    188
    +
    196typedef struct {
    +
    197 uint8_t media_type; // rom_media_type_t
    +
    198 uint16_t unique_identifier;
    +
    199 uint8_t destination_market; // rom_destination_market_t
    +
    200 uint8_t version;
    + +
    202
    +
    207typedef struct {
    +
    209 uint32_t config_flags; // TODO: use rom_config_flags_t
    +
    210
    +
    212 uint32_t clock_rate;
    +
    214 uint32_t boot_address;
    +
    216 uint32_t sdk_version;
    +
    217
    +
    219 uint64_t checksum;
    +
    220
    + +
    223
    +
    225 char title[21]; // 20 chars + null char
    +
    226
    +
    228 char unknown_reserved_2[7];
    +
    229
    + +
    234 char ipl_boot_code[0x0FC0];
    +
    235
    + +
    237
    +
    238#ifdef __cplusplus
    +
    239extern "C" {
    +
    240#endif
    +
    241
    + +
    243uint8_t rom_db_match_save_type(rom_header_t rom_header);
    +
    244uint8_t rom_db_match_expansion_pak(rom_header_t rom_header);
    +
    245
    +
    246#ifdef __cplusplus
    +
    247}
    +
    248#endif
    +
    249
    +
    250#endif
    +
    uint32_t sdk_version
    The ROM file SDK version.
    Definition: rom_database.h:216
    +
    uint32_t config_flags
    The ROM configuration flags.
    Definition: rom_database.h:209
    +
    homebrew_savetype_t
    ROM homebrew save type enumeration.
    Definition: rom_database.h:66
    +
    @ HB_SAVE_TYPE_SRAM_128K
    The ROM uses SRAM 128K saves.
    Definition: rom_database.h:80
    +
    @ HB_SAVE_TYPE_EEPROM_16K
    The ROM uses EEPROM 16K saves.
    Definition: rom_database.h:72
    +
    @ HB_SAVE_TYPE_NONE
    The ROM has no save type.
    Definition: rom_database.h:68
    +
    @ HB_SAVE_TYPE_FLASHRAM
    The ROM uses FLASHRAM saves.
    Definition: rom_database.h:78
    +
    @ HB_SAVE_TYPE_SRAM_BANKED
    The ROM uses SRAM Banked saves.
    Definition: rom_database.h:76
    +
    @ HB_SAVE_TYPE_EEPROM_4K
    The ROM uses EEPROM 4K saves.
    Definition: rom_database.h:70
    +
    @ HB_SAVE_TYPE_SRAM
    The ROM uses SRAM saves.
    Definition: rom_database.h:74
    +
    rom_metadata_t metadata
    The ROM file metadata.
    Definition: rom_database.h:231
    +
    rom_destination_market_t
    ROM market type enumeration.
    Definition: rom_database.h:118
    +
    @ MARKET_CHINA
    The ROM is designed for China (probably PAL-D).
    Definition: rom_database.h:124
    +
    @ MARKET_FRANCE
    The ROM is designed for France (probably PAL).
    Definition: rom_database.h:130
    +
    @ MARKET_PAL_X
    The ROM is designed for a PAL market (just unsure which and why).
    Definition: rom_database.h:160
    +
    @ MARKET_GERMANY
    The ROM is designed for Germany (probably PAL).
    Definition: rom_database.h:126
    +
    @ MARKET_CANADA
    The ROM is designed for Canada.
    Definition: rom_database.h:145
    +
    @ MARKET_PAL_Y
    The ROM is designed for a PAL market (just unsure which and why).
    Definition: rom_database.h:162
    +
    @ MARKET_JAPAN
    The ROM is designed for Japan. (probably NTSC-J)
    Definition: rom_database.h:138
    +
    @ MARKET_SPAIN
    The ROM is designed for Spain (probably PAL).
    Definition: rom_database.h:152
    +
    @ MARKET_PAL_Z
    The ROM is designed for a PAL market (just unsure which and why).
    Definition: rom_database.h:164
    +
    @ MARKET_GATEWAY64_PAL
    The ROM is designed for a PAL Gateway 64.
    Definition: rom_database.h:142
    +
    @ MARKET_GATEWAY64_NTSC
    The ROM is designed for a NTSC Gateway 64.
    Definition: rom_database.h:132
    +
    @ MARKET_KOREA
    The ROM is designed for Korea.
    Definition: rom_database.h:140
    +
    @ MARKET_PAL_GENERIC
    The ROM is designed for all PAL regions.
    Definition: rom_database.h:148
    +
    @ MARKET_AUSTRAILA
    The ROM is designed for Australia (probably PAL).
    Definition: rom_database.h:155
    +
    @ MARKET_SCANDINAVAIA
    The ROM is designed for Scandinavia.
    Definition: rom_database.h:158
    +
    @ MARKET_ITALY
    The ROM is designed for Italy (probably PAL).
    Definition: rom_database.h:136
    +
    @ MARKET_ALL
    The ROM is designed for all regions.
    Definition: rom_database.h:120
    +
    @ MARKET_USA
    The ROM is designed for USA. (probably NTSC-M)
    Definition: rom_database.h:128
    +
    @ MARKET_BRAZIL
    The ROM is designed for Brazil (probably PAL-M).
    Definition: rom_database.h:122
    +
    @ MARKET_NETHERLANDS
    The ROM is designed for Netherlands (probably PAL).
    Definition: rom_database.h:134
    +
    rom_header_t file_read_rom_header(char *path)
    Reads the N64 ROM header from a file.
    Definition: rom_database.c:40
    +
    rom_media_type_t
    ROM media type enumeration.
    Definition: rom_database.h:104
    +
    @ N64_DISK_EXPANDABLE
    Is a Disk Drive program that could use an extra Cartridge program to expand its capabilities.
    Definition: rom_database.h:112
    +
    @ N64_CART
    Is a stand alone Cartridge program.
    Definition: rom_database.h:106
    +
    @ N64_CART_EXPANDABLE
    Is a Cartridge program that could use an extra Disk Drive program to expand its capabilities.
    Definition: rom_database.h:110
    +
    @ N64_DISK
    Is a stand alone Disk Drive program.
    Definition: rom_database.h:108
    +
    @ N64_ALECK64
    Is an Aleck64 program.
    Definition: rom_database.h:114
    +
    uint64_t unknown_reserved_1
    The ROM file unknown reserved region at 0x18. for 8 bytes.
    Definition: rom_database.h:222
    +
    uint32_t boot_address
    The ROM file boot address.
    Definition: rom_database.h:214
    +
    db_savetype_t
    ROM database save type enumeration.
    Definition: rom_database.h:19
    +
    @ DB_SAVE_TYPE_NONE
    The ROM has no save type.
    Definition: rom_database.h:21
    +
    @ DB_SAVE_TYPE_CPAK
    The ROM uses CPAK saves.
    Definition: rom_database.h:35
    +
    @ DB_SAVE_TYPE_FLASHRAM
    The ROM uses FLASHRAM saves.
    Definition: rom_database.h:33
    +
    @ DB_SAVE_TYPE_DD_CONVERSION
    The ROM uses Disk Drive conversion saves.
    Definition: rom_database.h:39
    +
    @ DB_SAVE_TYPE_INVALID
    The ROM uses a save type that was not recognised.
    Definition: rom_database.h:41
    +
    @ DB_SAVE_TYPE_EEPROM_4K
    The ROM uses EEPROM 4K saves.
    Definition: rom_database.h:23
    +
    @ DB_SAVE_TYPE_EEPROM_16K
    The ROM uses EEPROM 16K saves.
    Definition: rom_database.h:25
    +
    @ DB_SAVE_TYPE_DD
    The ROM uses Disk Drive saves.
    Definition: rom_database.h:37
    +
    @ DB_SAVE_TYPE_SRAM_128K
    The ROM uses SRAM 128K saves.
    Definition: rom_database.h:31
    +
    @ DB_SAVE_TYPE_SRAM_BANKED
    The ROM uses SRAM Banked saves.
    Definition: rom_database.h:29
    +
    @ DB_SAVE_TYPE_SRAM
    The ROM uses SRAM saves.
    Definition: rom_database.h:27
    +
    rom_endian_type_t
    ROM file endian enumeration.
    Definition: rom_database.h:89
    +
    @ ROM_BIG_ENDIAN
    Big Endian ROM.
    Definition: rom_database.h:91
    +
    @ IPL_BIG_ENDIAN
    Big Endian IPL ROM.
    Definition: rom_database.h:99
    +
    @ ROM_MID_LITTLE_ENDIAN
    Mid Little Endian ROM.
    Definition: rom_database.h:97
    +
    @ ROM_MID_BIG_ENDIAN
    Mid Big Endian ROM.
    Definition: rom_database.h:95
    +
    @ ROM_LITTLE_ENDIAN
    Little Endian ROM.
    Definition: rom_database.h:93
    +
    uint64_t checksum
    The ROM file checksum.
    Definition: rom_database.h:219
    +
    rom_memorytype_t
    ROM system memory requirements enumeration.
    Definition: rom_database.h:46
    +
    @ DB_MEMORY_EXPANSION_REQUIRED
    The ROM requires 8MB of memory.
    Definition: rom_database.h:50
    +
    @ DB_MEMORY_EXPANSION_FAULTY
    The ROM is faulty when using 8MB of memory.
    Definition: rom_database.h:56
    +
    @ DB_MEMORY_EXPANSION_RECOMMENDED
    The ROM recommends 8MB of memory.
    Definition: rom_database.h:52
    +
    @ DB_MEMORY_EXPANSION_SUGGESTED
    The ROM suggests 8MB of memory.
    Definition: rom_database.h:54
    +
    @ DB_MEMORY_EXPANSION_NONE
    The ROM is happy with 4MB of memory.
    Definition: rom_database.h:48
    +
    uint32_t clock_rate
    The ROM file clock rate.
    Definition: rom_database.h:212
    +
    ROM Config Flags Structure.
    Definition: rom_database.h:178
    +
    ROM Header Structure.
    Definition: rom_database.h:207
    +
    ROM Metadata Structure.
    Definition: rom_database.h:196
    +
    + + + + diff --git a/sc64_8h_source.html b/sc64_8h_source.html new file mode 100644 index 00000000..fa9d2bc3 --- /dev/null +++ b/sc64_8h_source.html @@ -0,0 +1,97 @@ + + + + + + + +N64FlashcartMenu: sc64.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    sc64.h
    +
    +
    +
    1
    +
    7#ifndef FLASHCART_SC64_H__
    +
    8#define FLASHCART_SC64_H__
    +
    9
    +
    10
    +
    11#include "../flashcart.h"
    +
    12
    +
    19flashcart_t *sc64_get_flashcart (void);
    +
    20 /* sc64 */
    +
    22
    +
    23#endif
    +
    Flashcart Structure.
    Definition: flashcart.h:41
    +
    + + + + diff --git a/sc64__internal_8h_source.html b/sc64__internal_8h_source.html new file mode 100644 index 00000000..ef2ab6e4 --- /dev/null +++ b/sc64__internal_8h_source.html @@ -0,0 +1,200 @@ + + + + + + + +N64FlashcartMenu: sc64_internal.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    sc64_internal.h
    +
    +
    +
    1
    +
    7#ifndef FLASHCART_SC64_INTERNAL_H__
    +
    8#define FLASHCART_SC64_INTERNAL_H__
    +
    9
    +
    10
    +
    11#include <stddef.h>
    +
    12#include <stdint.h>
    +
    13
    +
    19typedef struct {
    +
    20 uint8_t BUFFER[8192];
    +
    21 uint8_t EEPROM[2048];
    +
    22 uint8_t DD_SECTOR[256];
    +
    23 uint8_t FLASHRAM[128];
    + +
    25
    +
    26#define SC64_BUFFERS_BASE (0x1FFE0000UL)
    +
    27#define SC64_BUFFERS ((sc64_buffers_t *) SC64_BUFFERS_BASE)
    +
    28
    +
    29
    +
    30typedef enum {
    +
    31 SC64_OK,
    +
    32 SC64_ERROR_BAD_ARGUMENT,
    +
    33 SC64_ERROR_BAD_ADDRESS,
    +
    34 SC64_ERROR_BAD_CONFIG_ID,
    +
    35 SC64_ERROR_TIMEOUT,
    +
    36 SC64_ERROR_SD_CARD,
    +
    37 SC64_ERROR_UNKNOWN_CMD = -1
    +
    38} sc64_error_t;
    +
    39
    +
    40typedef enum {
    +
    41 CFG_BOOTLOADER_SWITCH,
    +
    42 CFG_ROM_WRITE_ENABLE,
    +
    43 CFG_ROM_SHADOW_ENABLE,
    +
    44 CFG_DD_MODE,
    +
    45 CFG_ISV_ADDRESS,
    +
    46 CFG_BOOT_MODE,
    +
    47 CFG_SAVE_TYPE,
    +
    48 CFG_CIC_SEED,
    +
    49 CFG_TV_TYPE,
    +
    50 CFG_DD_SD_ENABLE,
    +
    51 CFG_DD_DRIVE_TYPE,
    +
    52 CFG_DD_DISK_STATE,
    +
    53 CFG_BUTTON_STATE,
    +
    54 CFG_BUTTON_MODE,
    +
    55 CFG_ROM_EXTENDED_ENABLE,
    +
    56} sc64_cfg_t;
    +
    57
    +
    58typedef enum {
    +
    59 DD_MODE_DISABLED = 0,
    +
    60 DD_MODE_REGS = 1,
    +
    61 DD_MODE_IPL = 2,
    +
    62 DD_MODE_FULL = 3
    +
    63} sc64_dd_mode_t;
    +
    64
    +
    65typedef enum {
    +
    66 BOOT_MODE_MENU = 0,
    +
    67 BOOT_MODE_ROM = 1,
    +
    68 BOOT_MODE_DDIPL = 2,
    +
    69 BOOT_MODE_DIRECT_ROM = 3,
    +
    70 BOOT_MODE_DIRECT_DDIPL = 4,
    +
    71} sc64_boot_mode_t;
    +
    72
    +
    73typedef enum {
    +
    74 SAVE_TYPE_NONE,
    +
    75 SAVE_TYPE_EEPROM_4K,
    +
    76 SAVE_TYPE_EEPROM_16K,
    +
    77 SAVE_TYPE_SRAM,
    +
    78 SAVE_TYPE_FLASHRAM,
    +
    79 SAVE_TYPE_SRAM_BANKED,
    +
    80 SAVE_TYPE_SRAM_128K,
    +
    81} sc64_save_type_t;
    +
    82
    +
    83typedef enum {
    +
    84 CIC_SEED_AUTO = 0xFFFF
    +
    85} sc64_cic_seed_t;
    +
    86
    +
    87typedef enum {
    +
    88 TV_TYPE_PAL = 0,
    +
    89 TV_TYPE_NTSC = 1,
    +
    90 TV_TYPE_MPAL = 2,
    +
    91 TV_TYPE_PASSTHROUGH = 3
    +
    92} sc64_tv_type_t;
    +
    93
    +
    94typedef enum {
    +
    95 DRIVE_TYPE_RETAIL,
    +
    96 DRIVE_TYPE_DEVELOPMENT,
    +
    97} sc64_drive_type_t;
    +
    98
    +
    99typedef enum {
    +
    100 DISK_STATE_EJECTED,
    +
    101 DISK_STATE_INSERTED,
    +
    102 DISK_STATE_CHANGED,
    +
    103} sc64_disk_state_t;
    +
    104
    +
    105typedef enum {
    +
    106 BUTTON_MODE_NONE,
    +
    107 BUTTON_MODE_N64_IRQ,
    +
    108 BUTTON_MODE_USB_PACKET,
    +
    109 BUTTON_MODE_DD_DISK_SWAP,
    +
    110} sc64_button_mode_t;
    +
    111
    +
    112
    +
    113void sc64_lock (void);
    +
    114sc64_error_t sc64_get_version (uint16_t *major, uint16_t *minor, uint32_t *revision);
    +
    115sc64_error_t sc64_get_config (sc64_cfg_t cfg, uint32_t *value);
    +
    116sc64_error_t sc64_set_config (sc64_cfg_t cfg, uint32_t value);
    +
    117sc64_error_t sc64_writeback_pending (bool *pending);
    +
    118sc64_error_t sc64_writeback_enable (void *address);
    +
    119sc64_error_t sc64_flash_wait_busy (void);
    +
    120sc64_error_t sc64_flash_get_erase_block_size (size_t *erase_block_size);
    +
    121sc64_error_t sc64_flash_erase_block (void *address);
    +
    122 /* sc64 */
    +
    124
    +
    125#endif
    +
    Definition: sc64_internal.h:19
    +
    + + + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 00000000..1365e291 --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['actions_2eh_0',['actions.h',['../actions_8h.html',1,'']]], + ['ai_5fregs_5ft_1',['ai_regs_t',['../boot__io_8h.html#structai__regs__t',1,'']]] +]; diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 00000000..830b1e7f --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['boot_2eh_0',['boot.h',['../boot_8h.html',1,'']]], + ['boot_5faddress_1',['boot_address',['../rom__database_8h.html#aa48b8e6299791b00d3050c8b426ea7c0',1,'rom_header_t']]], + ['boot_5fdevice_5ftype_5ft_2',['boot_device_type_t',['../boot_8h.html#ad2abc0c1ce054ac5d88d52df290c9bbd',1,'boot.h']]], + ['boot_5fio_2eh_3',['boot_io.h',['../boot__io_8h.html',1,'']]], + ['boot_5fparams_5ft_4',['boot_params_t',['../boot_8h.html#structboot__params__t',1,'']]], + ['boot_5freset_5ftype_5ft_5',['boot_reset_type_t',['../boot_8h.html#a58ed873284bb826c75f3b0be4948fcc6',1,'boot.h']]], + ['boot_5ftv_5ftype_5ft_6',['boot_tv_type_t',['../boot_8h.html#a88e68b10e3c1acd4e232de56e2d12353',1,'boot.h']]] +]; diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 00000000..d1b00d7e --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['vi_5fregs_5ft_0',['vi_regs_t',['../boot__io_8h.html#structvi__regs__t',1,'']]], + ['view_1',['View',['../group__view.html',1,'']]], + ['views_2eh_2',['views.h',['../views_8h.html',1,'']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 00000000..6ae30273 --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['cache_5fmetadata_5ft_0',['cache_metadata_t',['../structcache__metadata__t.html',1,'']]], + ['checksum_1',['checksum',['../rom__database_8h.html#ade2251d6099a8fb44460f206d79faf62',1,'rom_header_t']]], + ['clock_5frate_2',['clock_rate',['../rom__database_8h.html#ae541531dc9e7ae139f3c88716ab303c0',1,'rom_header_t']]], + ['component_5fbackground_5ft_3',['component_background_t',['../structcomponent__background__t.html',1,'']]], + ['component_5fboxart_5ft_4',['component_boxart_t',['../components_8h.html#structcomponent__boxart__t',1,'']]], + ['components_2eh_5',['components.h',['../components_8h.html',1,'']]], + ['config_5fflags_6',['config_flags',['../rom__database_8h.html#a36b8274c051911b8739c732d4290d17c',1,'rom_header_t']]], + ['constants_2eh_7',['constants.h',['../constants_8h.html',1,'']]], + ['crc32_2eh_8',['crc32.h',['../crc32_8h.html',1,'']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 00000000..8470333d --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['db_5fmemory_5fexpansion_5ffaulty_0',['DB_MEMORY_EXPANSION_FAULTY',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714a6ef02e89e4750185a5dfb3684e982bdf',1,'rom_database.h']]], + ['db_5fmemory_5fexpansion_5fnone_1',['DB_MEMORY_EXPANSION_NONE',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714ae7e681827e7e5d1260923b18534ca2d0',1,'rom_database.h']]], + ['db_5fmemory_5fexpansion_5frecommended_2',['DB_MEMORY_EXPANSION_RECOMMENDED',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714a88afc3f995da808c3772b2c6d92eeb2d',1,'rom_database.h']]], + ['db_5fmemory_5fexpansion_5frequired_3',['DB_MEMORY_EXPANSION_REQUIRED',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714a073891ae34cfb1d6d40200d7b0236e46',1,'rom_database.h']]], + ['db_5fmemory_5fexpansion_5fsuggested_4',['DB_MEMORY_EXPANSION_SUGGESTED',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714ac7d2a6db839e168ec13c9e07c6650630',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fcpak_5',['DB_SAVE_TYPE_CPAK',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a218b71b755fa244349266a89270c5eb8',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fdd_6',['DB_SAVE_TYPE_DD',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a9ec98db1226c93752c8879e0a8ea429e',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fdd_5fconversion_7',['DB_SAVE_TYPE_DD_CONVERSION',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a4b29a4117a90e53975d74e7f0cf1feb3',1,'rom_database.h']]], + ['db_5fsave_5ftype_5feeprom_5f16k_8',['DB_SAVE_TYPE_EEPROM_16K',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a9c484e229a227629541c43fafa973619',1,'rom_database.h']]], + ['db_5fsave_5ftype_5feeprom_5f4k_9',['DB_SAVE_TYPE_EEPROM_4K',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a916ca00d1b321577c68ed8f80b9e3138',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fflashram_10',['DB_SAVE_TYPE_FLASHRAM',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a38243ddc6e5d5804891e485629645707',1,'rom_database.h']]], + ['db_5fsave_5ftype_5finvalid_11',['DB_SAVE_TYPE_INVALID',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a8dfe4e8e943ac053b89f8f9cf2aade86',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fnone_12',['DB_SAVE_TYPE_NONE',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a07ec54dd69369e0ebb3027bc6a69f48e',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fsram_13',['DB_SAVE_TYPE_SRAM',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685acce0b10714a290fa6c183e9cc647b253',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fsram_5f128k_14',['DB_SAVE_TYPE_SRAM_128K',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685ab9da468ef68af55b24c78543741d1017',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fsram_5fbanked_15',['DB_SAVE_TYPE_SRAM_BANKED',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685ac159a2c35449b4e55f40bba06d965009',1,'rom_database.h']]], + ['db_5fsavetype_5ft_16',['db_savetype_t',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685',1,'rom_database.h']]], + ['default_5fdirectory_17',['default_directory',['../settings_8h.html#a7b25ac0c578507eb002025f1e5ad6041',1,'settings_t']]], + ['dpc_5fregs_5ft_18',['dpc_regs_t',['../boot__io_8h.html#structdpc__regs__t',1,'']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 00000000..816dd5c7 --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['entry_5ft_0',['entry_t',['../menu__state_8h.html#structentry__t',1,'']]], + ['entry_5ftype_5ft_1',['entry_type_t',['../menu__state_8h.html#a7e00527da87fefde59d447ebc4aedd7a',1,'menu_state.h']]] +]; diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 00000000..6531b321 --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['file_5fread_5from_5fheader_0',['file_read_rom_header',['../rom__database_8h.html#a7a380f5fac523be56bad42cef02d0a3d',1,'rom_database.c']]], + ['flashcart_2eh_1',['flashcart.h',['../flashcart_8h.html',1,'']]], + ['flashcart_5ferror_5ft_2',['flashcart_error_t',['../flashcart_8h.html#a350f576549fef0c185b679ef0a132289',1,'flashcart.h']]], + ['flashcart_5fsave_5ftype_5ft_3',['flashcart_save_type_t',['../flashcart_8h.html#a51261e17f581033419e18c3e3d0c2cf2',1,'flashcart.h']]], + ['flashcart_5ft_4',['flashcart_t',['../structflashcart__t.html',1,'']]], + ['flashcart_5futils_2eh_5',['flashcart_utils.h',['../flashcart__utils_8h.html',1,'']]], + ['fonts_2eh_6',['fonts.h',['../fonts_8h.html',1,'']]] +]; diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 00000000..6c4965da --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['hb_5fsave_5ftype_5feeprom_5f16k_0',['HB_SAVE_TYPE_EEPROM_16K',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8a10d83c5d10accab32697ee25aa722de0',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5feeprom_5f4k_1',['HB_SAVE_TYPE_EEPROM_4K',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8aa924ea1df0fafd2abd108b11881663fc',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5fflashram_2',['HB_SAVE_TYPE_FLASHRAM',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8a3e8acd0c73d718a43ea1f7dd9c091da0',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5fnone_3',['HB_SAVE_TYPE_NONE',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8a19b2659e1029cc57e3316e7ddb7b3098',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5fsram_4',['HB_SAVE_TYPE_SRAM',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8af8faee9773d12f24b30df0a99d5e8307',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5fsram_5f128k_5',['HB_SAVE_TYPE_SRAM_128K',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8a03bbf34c332244ff38bd4c3202a366c4',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5fsram_5fbanked_6',['HB_SAVE_TYPE_SRAM_BANKED',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8a89495d0cc0553ec93813bdc8cb7d6594',1,'rom_database.h']]], + ['homebrew_5fsavetype_5ft_7',['homebrew_savetype_t',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8',1,'rom_database.h']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 00000000..48b44624 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ipl3_5fcrc32_5ft_0',['ipl3_crc32_t',['../structipl3__crc32__t.html',1,'']]], + ['ipl_5fbig_5fendian_1',['IPL_BIG_ENDIAN',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7a8402595393579af3273cc16a5477bce3',1,'rom_database.h']]], + ['ipl_5fboot_5fcode_2',['ipl_boot_code',['../rom__database_8h.html#a21815400a686f92a7bfffdd1f17b5b86',1,'rom_header_t']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 00000000..7429de43 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['market_5fall_0',['MARKET_ALL',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ad9bc0c3b267e260e56e93c5ac7028816',1,'rom_database.h']]], + ['market_5faustraila_1',['MARKET_AUSTRAILA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ac79c37d5486d1acba069bc6bd9d958a9',1,'rom_database.h']]], + ['market_5fbrazil_2',['MARKET_BRAZIL',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545aea349f70b9a1c9eec71c4b26ccfb463d',1,'rom_database.h']]], + ['market_5fcanada_3',['MARKET_CANADA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a6720ca1889f71b1a5445d246a49337f3',1,'rom_database.h']]], + ['market_5fchina_4',['MARKET_CHINA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a063a558f5d4b2da3f879a05031d412ce',1,'rom_database.h']]], + ['market_5ffrance_5',['MARKET_FRANCE',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a10e6d085681f6f26d6582e8ebf665d11',1,'rom_database.h']]], + ['market_5fgateway64_5fntsc_6',['MARKET_GATEWAY64_NTSC',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ab0a10418b57442d5759df02f5a0f45e8',1,'rom_database.h']]], + ['market_5fgateway64_5fpal_7',['MARKET_GATEWAY64_PAL',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545aaba43978734c0351513b95f58e96aac4',1,'rom_database.h']]], + ['market_5fgermany_8',['MARKET_GERMANY',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a39d4b279d0edbae34bc01b49be8f0bdf',1,'rom_database.h']]], + ['market_5fitaly_9',['MARKET_ITALY',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ad96a222a7bc8dbaf5440cf8f382b5db2',1,'rom_database.h']]], + ['market_5fjapan_10',['MARKET_JAPAN',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a8537ad3a53ff03b92710323d96a01f94',1,'rom_database.h']]], + ['market_5fkorea_11',['MARKET_KOREA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ab3709051938792d1f3a0d02f7bfe56a3',1,'rom_database.h']]], + ['market_5fnetherlands_12',['MARKET_NETHERLANDS',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545af1bfe6356b0825b5b1c3cd92e7eead0b',1,'rom_database.h']]], + ['market_5fpal_5fgeneric_13',['MARKET_PAL_GENERIC',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ac188988bbe9f6137c4bf192734ab6c33',1,'rom_database.h']]], + ['market_5fpal_5fx_14',['MARKET_PAL_X',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a1e63ff548d6963f2e8fb5cc5279cfca0',1,'rom_database.h']]], + ['market_5fpal_5fy_15',['MARKET_PAL_Y',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a67ebdd41d4961a69c36d1d9c27981217',1,'rom_database.h']]], + ['market_5fpal_5fz_16',['MARKET_PAL_Z',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a9b068f04449be289cc4cd42fbcf60b8d',1,'rom_database.h']]], + ['market_5fscandinavaia_17',['MARKET_SCANDINAVAIA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545acc791961829a52278689ffe5ed66af66',1,'rom_database.h']]], + ['market_5fspain_18',['MARKET_SPAIN',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a8a0d46749808d094da1ab0a99793e7cc',1,'rom_database.h']]], + ['market_5fusa_19',['MARKET_USA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ae3ccd74570644363e1ac2f0a83779a56',1,'rom_database.h']]], + ['menu_2eh_20',['menu.h',['../menu_8h.html',1,'']]], + ['menu_5fmode_5ft_21',['menu_mode_t',['../menu__state_8h.html#aea8b3793f8f84c964eb96c91b0768a70',1,'menu_state.h']]], + ['menu_5fstate_2eh_22',['menu_state.h',['../menu__state_8h.html',1,'']]], + ['menu_5ft_23',['menu_t',['../menu__state_8h.html#structmenu__t',1,'']]], + ['menu_5ft_2eactions_24',['menu_t.actions',['../menu__state_8h.html#structmenu__t_8actions',1,'']]], + ['menu_5ft_2ebrowser_25',['menu_t.browser',['../menu__state_8h.html#structmenu__t_8browser',1,'']]], + ['metadata_26',['metadata',['../rom__database_8h.html#a57ad29be073b94eeeb7b7e41f8648c93',1,'rom_header_t']]], + ['mp3player_5ft_27',['mp3player_t',['../structmp3player__t.html',1,'']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 00000000..14b6635d --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['n64_20flashcart_20menu_0',['N64 Flashcart Menu',['../index.html',1,'']]], + ['n64_5faleck64_1',['N64_ALECK64',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74cae05d1f3888937647e60af840097f32c0',1,'rom_database.h']]], + ['n64_5fcart_2',['N64_CART',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74ca1bd823fc8b9c795053d238a96c6f5524',1,'rom_database.h']]], + ['n64_5fcart_5fexpandable_3',['N64_CART_EXPANDABLE',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74ca45d9f8446e39a1fa4220d57448e609df',1,'rom_database.h']]], + ['n64_5fdisk_4',['N64_DISK',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74ca4892177cc838193ba4b53d904d91af25',1,'rom_database.h']]], + ['n64_5fdisk_5fexpandable_5',['N64_DISK_EXPANDABLE',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74ca0b98dff1eb797c2684050e4d430d8722',1,'rom_database.h']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 00000000..60ff3bf8 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['os_5finfo_5ft_0',['os_info_t',['../boot__io_8h.html#structos__info__t',1,'']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 00000000..250e7e4f --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['pal60_0',['pal60',['../settings_8h.html#a79fc353a44eced7468274ad42f600695',1,'settings_t']]], + ['path_2eh_1',['path.h',['../path_8h.html',1,'']]], + ['path_5ft_2',['path_t',['../path_8h.html#structpath__t',1,'']]], + ['pi_5fregs_5ft_3',['pi_regs_t',['../boot__io_8h.html#structpi__regs__t',1,'']]], + ['pi_5fregs_5ft_2edom_4',['pi_regs_t.DOM',['../boot__io_8h.html#structpi__regs__t_8DOM',1,'']]], + ['png_5fdecoder_5ft_5',['png_decoder_t',['../structpng__decoder__t.html',1,'']]] +]; diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 00000000..7e5e6997 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['rom_5fbig_5fendian_0',['ROM_BIG_ENDIAN',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7a2762e3000863a02f8ed4e3e85d390d5c',1,'rom_database.h']]], + ['rom_5fconfig_5fflags_5ft_1',['rom_config_flags_t',['../rom__database_8h.html#structrom__config__flags__t',1,'']]], + ['rom_5fdatabase_2eh_2',['rom_database.h',['../rom__database_8h.html',1,'']]], + ['rom_5fdestination_5fmarket_5ft_3',['rom_destination_market_t',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545',1,'rom_database.h']]], + ['rom_5fendian_5ftype_5ft_4',['rom_endian_type_t',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7',1,'rom_database.h']]], + ['rom_5fheader_5ft_5',['rom_header_t',['../rom__database_8h.html#structrom__header__t',1,'']]], + ['rom_5flittle_5fendian_6',['ROM_LITTLE_ENDIAN',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7adf8f0685a583ce5117b8d16518f75caa',1,'rom_database.h']]], + ['rom_5fmedia_5ftype_5ft_7',['rom_media_type_t',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74c',1,'rom_database.h']]], + ['rom_5fmemorytype_5ft_8',['rom_memorytype_t',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714',1,'rom_database.h']]], + ['rom_5fmetadata_5ft_9',['rom_metadata_t',['../rom__database_8h.html#structrom__metadata__t',1,'']]], + ['rom_5fmid_5fbig_5fendian_10',['ROM_MID_BIG_ENDIAN',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7ac8e75ac53052e21af772a8f35b69ecf2',1,'rom_database.h']]], + ['rom_5fmid_5flittle_5fendian_11',['ROM_MID_LITTLE_ENDIAN',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7abcaf9dc73653de13df226b79c0be87aa',1,'rom_database.h']]] +]; diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 00000000..8491fb22 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['sc64_0',['Sc64',['../group__sc64.html',1,'']]], + ['sc64_5fbuffers_5ft_1',['sc64_buffers_t',['../group__sc64.html#structsc64__buffers__t',1,'']]], + ['sc64_5fcmd_5ft_2',['sc64_cmd_t',['../structsc64__cmd__t.html',1,'']]], + ['sc64_5fregs_5ft_3',['sc64_regs_t',['../structsc64__regs__t.html',1,'']]], + ['sdk_5fversion_4',['sdk_version',['../rom__database_8h.html#a0115fe44deda826f21523f83edefd517',1,'rom_header_t']]], + ['settings_2eh_5',['settings.h',['../settings_8h.html',1,'']]], + ['settings_5ft_6',['settings_t',['../settings_8h.html#structsettings__t',1,'']]], + ['show_5fhidden_5ffiles_7',['show_hidden_files',['../settings_8h.html#a7f6db7abffab57f3879660afc7187108',1,'settings_t']]], + ['sp_5fmem_5ft_8',['sp_mem_t',['../boot__io_8h.html#structsp__mem__t',1,'']]], + ['sp_5fregs_5ft_9',['sp_regs_t',['../boot__io_8h.html#structsp__regs__t',1,'']]] +]; diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 00000000..37c4af81 --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['title_0',['title',['../rom__database_8h.html#a52acfe0dc99a48195e43c88dd8a2528b',1,'rom_header_t']]] +]; diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 00000000..2180d9cd --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unknown_5freserved_5f1_0',['unknown_reserved_1',['../rom__database_8h.html#a825b12b7c8fdd72980e7d987c26b1f76',1,'rom_header_t']]], + ['unknown_5freserved_5f2_1',['unknown_reserved_2',['../rom__database_8h.html#ae03145554be76986cb1d1bff2aff4585',1,'rom_header_t']]] +]; diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 00000000..970c3e6e --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ai_5fregs_5ft_0',['ai_regs_t',['../boot__io_8h.html#structai__regs__t',1,'']]] +]; diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 00000000..43a7e462 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['boot_5fparams_5ft_0',['boot_params_t',['../boot_8h.html#structboot__params__t',1,'']]] +]; diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 00000000..b35bf6b8 --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['cache_5fmetadata_5ft_0',['cache_metadata_t',['../structcache__metadata__t.html',1,'']]], + ['component_5fbackground_5ft_1',['component_background_t',['../structcomponent__background__t.html',1,'']]], + ['component_5fboxart_5ft_2',['component_boxart_t',['../components_8h.html#structcomponent__boxart__t',1,'']]] +]; diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 00000000..aeaf297b --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dpc_5fregs_5ft_0',['dpc_regs_t',['../boot__io_8h.html#structdpc__regs__t',1,'']]] +]; diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 00000000..d2915dfd --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['entry_5ft_0',['entry_t',['../menu__state_8h.html#structentry__t',1,'']]] +]; diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 00000000..55d6a239 --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flashcart_5ft_0',['flashcart_t',['../structflashcart__t.html',1,'']]] +]; diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 00000000..7add9f3c --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ipl3_5fcrc32_5ft_0',['ipl3_crc32_t',['../structipl3__crc32__t.html',1,'']]] +]; diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 00000000..938d9893 --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['menu_5ft_0',['menu_t',['../menu__state_8h.html#structmenu__t',1,'']]], + ['menu_5ft_2eactions_1',['menu_t.actions',['../menu__state_8h.html#structmenu__t_8actions',1,'']]], + ['menu_5ft_2ebrowser_2',['menu_t.browser',['../menu__state_8h.html#structmenu__t_8browser',1,'']]], + ['mp3player_5ft_3',['mp3player_t',['../structmp3player__t.html',1,'']]] +]; diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 00000000..60ff3bf8 --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['os_5finfo_5ft_0',['os_info_t',['../boot__io_8h.html#structos__info__t',1,'']]] +]; diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 00000000..5da259e3 --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['path_5ft_0',['path_t',['../path_8h.html#structpath__t',1,'']]], + ['pi_5fregs_5ft_1',['pi_regs_t',['../boot__io_8h.html#structpi__regs__t',1,'']]], + ['pi_5fregs_5ft_2edom_2',['pi_regs_t.DOM',['../boot__io_8h.html#structpi__regs__t_8DOM',1,'']]], + ['png_5fdecoder_5ft_3',['png_decoder_t',['../structpng__decoder__t.html',1,'']]] +]; diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 00000000..c8450aa6 --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['rom_5fconfig_5fflags_5ft_0',['rom_config_flags_t',['../rom__database_8h.html#structrom__config__flags__t',1,'']]], + ['rom_5fheader_5ft_1',['rom_header_t',['../rom__database_8h.html#structrom__header__t',1,'']]], + ['rom_5fmetadata_5ft_2',['rom_metadata_t',['../rom__database_8h.html#structrom__metadata__t',1,'']]] +]; diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 00000000..d187fde3 --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['sc64_5fbuffers_5ft_0',['sc64_buffers_t',['../group__sc64.html#structsc64__buffers__t',1,'']]], + ['sc64_5fcmd_5ft_1',['sc64_cmd_t',['../structsc64__cmd__t.html',1,'']]], + ['sc64_5fregs_5ft_2',['sc64_regs_t',['../structsc64__regs__t.html',1,'']]], + ['settings_5ft_3',['settings_t',['../settings_8h.html#structsettings__t',1,'']]], + ['sp_5fmem_5ft_4',['sp_mem_t',['../boot__io_8h.html#structsp__mem__t',1,'']]], + ['sp_5fregs_5ft_5',['sp_regs_t',['../boot__io_8h.html#structsp__regs__t',1,'']]] +]; diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 00000000..2bc73dbc --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['vi_5fregs_5ft_0',['vi_regs_t',['../boot__io_8h.html#structvi__regs__t',1,'']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 00000000..a933eea1 --- /dev/null +++ b/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 00000000..f86e04cb --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['boot_5fdevice_5ftype_5ft_0',['boot_device_type_t',['../boot_8h.html#ad2abc0c1ce054ac5d88d52df290c9bbd',1,'boot.h']]], + ['boot_5freset_5ftype_5ft_1',['boot_reset_type_t',['../boot_8h.html#a58ed873284bb826c75f3b0be4948fcc6',1,'boot.h']]], + ['boot_5ftv_5ftype_5ft_2',['boot_tv_type_t',['../boot_8h.html#a88e68b10e3c1acd4e232de56e2d12353',1,'boot.h']]] +]; diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 00000000..5cc0dfef --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['db_5fsavetype_5ft_0',['db_savetype_t',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685',1,'rom_database.h']]] +]; diff --git a/search/enums_2.js b/search/enums_2.js new file mode 100644 index 00000000..7d80598a --- /dev/null +++ b/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['entry_5ftype_5ft_0',['entry_type_t',['../menu__state_8h.html#a7e00527da87fefde59d447ebc4aedd7a',1,'menu_state.h']]] +]; diff --git a/search/enums_3.js b/search/enums_3.js new file mode 100644 index 00000000..8fa4b718 --- /dev/null +++ b/search/enums_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['flashcart_5ferror_5ft_0',['flashcart_error_t',['../flashcart_8h.html#a350f576549fef0c185b679ef0a132289',1,'flashcart.h']]], + ['flashcart_5fsave_5ftype_5ft_1',['flashcart_save_type_t',['../flashcart_8h.html#a51261e17f581033419e18c3e3d0c2cf2',1,'flashcart.h']]] +]; diff --git a/search/enums_4.js b/search/enums_4.js new file mode 100644 index 00000000..cdd79520 --- /dev/null +++ b/search/enums_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['homebrew_5fsavetype_5ft_0',['homebrew_savetype_t',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8',1,'rom_database.h']]] +]; diff --git a/search/enums_5.js b/search/enums_5.js new file mode 100644 index 00000000..bcc6f266 --- /dev/null +++ b/search/enums_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['menu_5fmode_5ft_0',['menu_mode_t',['../menu__state_8h.html#aea8b3793f8f84c964eb96c91b0768a70',1,'menu_state.h']]] +]; diff --git a/search/enums_6.js b/search/enums_6.js new file mode 100644 index 00000000..aaa5aa12 --- /dev/null +++ b/search/enums_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['rom_5fdestination_5fmarket_5ft_0',['rom_destination_market_t',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545',1,'rom_database.h']]], + ['rom_5fendian_5ftype_5ft_1',['rom_endian_type_t',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7',1,'rom_database.h']]], + ['rom_5fmedia_5ftype_5ft_2',['rom_media_type_t',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74c',1,'rom_database.h']]], + ['rom_5fmemorytype_5ft_3',['rom_memorytype_t',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714',1,'rom_database.h']]] +]; diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js new file mode 100644 index 00000000..cd0783b4 --- /dev/null +++ b/search/enumvalues_0.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['db_5fmemory_5fexpansion_5ffaulty_0',['DB_MEMORY_EXPANSION_FAULTY',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714a6ef02e89e4750185a5dfb3684e982bdf',1,'rom_database.h']]], + ['db_5fmemory_5fexpansion_5fnone_1',['DB_MEMORY_EXPANSION_NONE',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714ae7e681827e7e5d1260923b18534ca2d0',1,'rom_database.h']]], + ['db_5fmemory_5fexpansion_5frecommended_2',['DB_MEMORY_EXPANSION_RECOMMENDED',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714a88afc3f995da808c3772b2c6d92eeb2d',1,'rom_database.h']]], + ['db_5fmemory_5fexpansion_5frequired_3',['DB_MEMORY_EXPANSION_REQUIRED',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714a073891ae34cfb1d6d40200d7b0236e46',1,'rom_database.h']]], + ['db_5fmemory_5fexpansion_5fsuggested_4',['DB_MEMORY_EXPANSION_SUGGESTED',['../rom__database_8h.html#ae15b00a2fe5f49a9791a351b91d97714ac7d2a6db839e168ec13c9e07c6650630',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fcpak_5',['DB_SAVE_TYPE_CPAK',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a218b71b755fa244349266a89270c5eb8',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fdd_6',['DB_SAVE_TYPE_DD',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a9ec98db1226c93752c8879e0a8ea429e',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fdd_5fconversion_7',['DB_SAVE_TYPE_DD_CONVERSION',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a4b29a4117a90e53975d74e7f0cf1feb3',1,'rom_database.h']]], + ['db_5fsave_5ftype_5feeprom_5f16k_8',['DB_SAVE_TYPE_EEPROM_16K',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a9c484e229a227629541c43fafa973619',1,'rom_database.h']]], + ['db_5fsave_5ftype_5feeprom_5f4k_9',['DB_SAVE_TYPE_EEPROM_4K',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a916ca00d1b321577c68ed8f80b9e3138',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fflashram_10',['DB_SAVE_TYPE_FLASHRAM',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a38243ddc6e5d5804891e485629645707',1,'rom_database.h']]], + ['db_5fsave_5ftype_5finvalid_11',['DB_SAVE_TYPE_INVALID',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a8dfe4e8e943ac053b89f8f9cf2aade86',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fnone_12',['DB_SAVE_TYPE_NONE',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685a07ec54dd69369e0ebb3027bc6a69f48e',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fsram_13',['DB_SAVE_TYPE_SRAM',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685acce0b10714a290fa6c183e9cc647b253',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fsram_5f128k_14',['DB_SAVE_TYPE_SRAM_128K',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685ab9da468ef68af55b24c78543741d1017',1,'rom_database.h']]], + ['db_5fsave_5ftype_5fsram_5fbanked_15',['DB_SAVE_TYPE_SRAM_BANKED',['../rom__database_8h.html#aa9fa987c4bd8ced5523cd65f3408c685ac159a2c35449b4e55f40bba06d965009',1,'rom_database.h']]] +]; diff --git a/search/enumvalues_1.js b/search/enumvalues_1.js new file mode 100644 index 00000000..b7da2319 --- /dev/null +++ b/search/enumvalues_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['hb_5fsave_5ftype_5feeprom_5f16k_0',['HB_SAVE_TYPE_EEPROM_16K',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8a10d83c5d10accab32697ee25aa722de0',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5feeprom_5f4k_1',['HB_SAVE_TYPE_EEPROM_4K',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8aa924ea1df0fafd2abd108b11881663fc',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5fflashram_2',['HB_SAVE_TYPE_FLASHRAM',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8a3e8acd0c73d718a43ea1f7dd9c091da0',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5fnone_3',['HB_SAVE_TYPE_NONE',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8a19b2659e1029cc57e3316e7ddb7b3098',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5fsram_4',['HB_SAVE_TYPE_SRAM',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8af8faee9773d12f24b30df0a99d5e8307',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5fsram_5f128k_5',['HB_SAVE_TYPE_SRAM_128K',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8a03bbf34c332244ff38bd4c3202a366c4',1,'rom_database.h']]], + ['hb_5fsave_5ftype_5fsram_5fbanked_6',['HB_SAVE_TYPE_SRAM_BANKED',['../rom__database_8h.html#a3bd14048ebc4ca94184a04094d477fb8a89495d0cc0553ec93813bdc8cb7d6594',1,'rom_database.h']]] +]; diff --git a/search/enumvalues_2.js b/search/enumvalues_2.js new file mode 100644 index 00000000..8f829319 --- /dev/null +++ b/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ipl_5fbig_5fendian_0',['IPL_BIG_ENDIAN',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7a8402595393579af3273cc16a5477bce3',1,'rom_database.h']]] +]; diff --git a/search/enumvalues_3.js b/search/enumvalues_3.js new file mode 100644 index 00000000..0fb9d437 --- /dev/null +++ b/search/enumvalues_3.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['market_5fall_0',['MARKET_ALL',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ad9bc0c3b267e260e56e93c5ac7028816',1,'rom_database.h']]], + ['market_5faustraila_1',['MARKET_AUSTRAILA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ac79c37d5486d1acba069bc6bd9d958a9',1,'rom_database.h']]], + ['market_5fbrazil_2',['MARKET_BRAZIL',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545aea349f70b9a1c9eec71c4b26ccfb463d',1,'rom_database.h']]], + ['market_5fcanada_3',['MARKET_CANADA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a6720ca1889f71b1a5445d246a49337f3',1,'rom_database.h']]], + ['market_5fchina_4',['MARKET_CHINA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a063a558f5d4b2da3f879a05031d412ce',1,'rom_database.h']]], + ['market_5ffrance_5',['MARKET_FRANCE',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a10e6d085681f6f26d6582e8ebf665d11',1,'rom_database.h']]], + ['market_5fgateway64_5fntsc_6',['MARKET_GATEWAY64_NTSC',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ab0a10418b57442d5759df02f5a0f45e8',1,'rom_database.h']]], + ['market_5fgateway64_5fpal_7',['MARKET_GATEWAY64_PAL',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545aaba43978734c0351513b95f58e96aac4',1,'rom_database.h']]], + ['market_5fgermany_8',['MARKET_GERMANY',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a39d4b279d0edbae34bc01b49be8f0bdf',1,'rom_database.h']]], + ['market_5fitaly_9',['MARKET_ITALY',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ad96a222a7bc8dbaf5440cf8f382b5db2',1,'rom_database.h']]], + ['market_5fjapan_10',['MARKET_JAPAN',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a8537ad3a53ff03b92710323d96a01f94',1,'rom_database.h']]], + ['market_5fkorea_11',['MARKET_KOREA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ab3709051938792d1f3a0d02f7bfe56a3',1,'rom_database.h']]], + ['market_5fnetherlands_12',['MARKET_NETHERLANDS',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545af1bfe6356b0825b5b1c3cd92e7eead0b',1,'rom_database.h']]], + ['market_5fpal_5fgeneric_13',['MARKET_PAL_GENERIC',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ac188988bbe9f6137c4bf192734ab6c33',1,'rom_database.h']]], + ['market_5fpal_5fx_14',['MARKET_PAL_X',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a1e63ff548d6963f2e8fb5cc5279cfca0',1,'rom_database.h']]], + ['market_5fpal_5fy_15',['MARKET_PAL_Y',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a67ebdd41d4961a69c36d1d9c27981217',1,'rom_database.h']]], + ['market_5fpal_5fz_16',['MARKET_PAL_Z',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a9b068f04449be289cc4cd42fbcf60b8d',1,'rom_database.h']]], + ['market_5fscandinavaia_17',['MARKET_SCANDINAVAIA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545acc791961829a52278689ffe5ed66af66',1,'rom_database.h']]], + ['market_5fspain_18',['MARKET_SPAIN',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545a8a0d46749808d094da1ab0a99793e7cc',1,'rom_database.h']]], + ['market_5fusa_19',['MARKET_USA',['../rom__database_8h.html#a64d030402f123f66f3c8360650107545ae3ccd74570644363e1ac2f0a83779a56',1,'rom_database.h']]] +]; diff --git a/search/enumvalues_4.js b/search/enumvalues_4.js new file mode 100644 index 00000000..b1aa256e --- /dev/null +++ b/search/enumvalues_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['n64_5faleck64_0',['N64_ALECK64',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74cae05d1f3888937647e60af840097f32c0',1,'rom_database.h']]], + ['n64_5fcart_1',['N64_CART',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74ca1bd823fc8b9c795053d238a96c6f5524',1,'rom_database.h']]], + ['n64_5fcart_5fexpandable_2',['N64_CART_EXPANDABLE',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74ca45d9f8446e39a1fa4220d57448e609df',1,'rom_database.h']]], + ['n64_5fdisk_3',['N64_DISK',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74ca4892177cc838193ba4b53d904d91af25',1,'rom_database.h']]], + ['n64_5fdisk_5fexpandable_4',['N64_DISK_EXPANDABLE',['../rom__database_8h.html#a7c6debc1bf7d7067342309be5d63e74ca0b98dff1eb797c2684050e4d430d8722',1,'rom_database.h']]] +]; diff --git a/search/enumvalues_5.js b/search/enumvalues_5.js new file mode 100644 index 00000000..b994ceb9 --- /dev/null +++ b/search/enumvalues_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['rom_5fbig_5fendian_0',['ROM_BIG_ENDIAN',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7a2762e3000863a02f8ed4e3e85d390d5c',1,'rom_database.h']]], + ['rom_5flittle_5fendian_1',['ROM_LITTLE_ENDIAN',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7adf8f0685a583ce5117b8d16518f75caa',1,'rom_database.h']]], + ['rom_5fmid_5fbig_5fendian_2',['ROM_MID_BIG_ENDIAN',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7ac8e75ac53052e21af772a8f35b69ecf2',1,'rom_database.h']]], + ['rom_5fmid_5flittle_5fendian_3',['ROM_MID_LITTLE_ENDIAN',['../rom__database_8h.html#ad10f4f1e1c8138c9715e87d9113c85a7abcaf9dc73653de13df226b79c0be87aa',1,'rom_database.h']]] +]; diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 00000000..27c12eca --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['actions_2eh_0',['actions.h',['../actions_8h.html',1,'']]] +]; diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 00000000..dc7d203a --- /dev/null +++ b/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['boot_2eh_0',['boot.h',['../boot_8h.html',1,'']]], + ['boot_5fio_2eh_1',['boot_io.h',['../boot__io_8h.html',1,'']]] +]; diff --git a/search/files_2.js b/search/files_2.js new file mode 100644 index 00000000..2919a983 --- /dev/null +++ b/search/files_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['components_2eh_0',['components.h',['../components_8h.html',1,'']]], + ['constants_2eh_1',['constants.h',['../constants_8h.html',1,'']]], + ['crc32_2eh_2',['crc32.h',['../crc32_8h.html',1,'']]] +]; diff --git a/search/files_3.js b/search/files_3.js new file mode 100644 index 00000000..844b0b4d --- /dev/null +++ b/search/files_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['flashcart_2eh_0',['flashcart.h',['../flashcart_8h.html',1,'']]], + ['flashcart_5futils_2eh_1',['flashcart_utils.h',['../flashcart__utils_8h.html',1,'']]], + ['fonts_2eh_2',['fonts.h',['../fonts_8h.html',1,'']]] +]; diff --git a/search/files_4.js b/search/files_4.js new file mode 100644 index 00000000..60383080 --- /dev/null +++ b/search/files_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['menu_2eh_0',['menu.h',['../menu_8h.html',1,'']]], + ['menu_5fstate_2eh_1',['menu_state.h',['../menu__state_8h.html',1,'']]] +]; diff --git a/search/files_5.js b/search/files_5.js new file mode 100644 index 00000000..82c39e12 --- /dev/null +++ b/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['path_2eh_0',['path.h',['../path_8h.html',1,'']]] +]; diff --git a/search/files_6.js b/search/files_6.js new file mode 100644 index 00000000..1ebf68df --- /dev/null +++ b/search/files_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['rom_5fdatabase_2eh_0',['rom_database.h',['../rom__database_8h.html',1,'']]] +]; diff --git a/search/files_7.js b/search/files_7.js new file mode 100644 index 00000000..6ab868af --- /dev/null +++ b/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['settings_2eh_0',['settings.h',['../settings_8h.html',1,'']]] +]; diff --git a/search/files_8.js b/search/files_8.js new file mode 100644 index 00000000..12e67ccd --- /dev/null +++ b/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['views_2eh_0',['views.h',['../views_8h.html',1,'']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 00000000..ba309810 --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['file_5fread_5from_5fheader_0',['file_read_rom_header',['../rom__database_8h.html#a7a380f5fac523be56bad42cef02d0a3d',1,'rom_database.c']]] +]; diff --git a/search/groups_0.js b/search/groups_0.js new file mode 100644 index 00000000..ab082e0f --- /dev/null +++ b/search/groups_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['sc64_0',['Sc64',['../group__sc64.html',1,'']]] +]; diff --git a/search/groups_1.js b/search/groups_1.js new file mode 100644 index 00000000..60928e4a --- /dev/null +++ b/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['view_0',['View',['../group__view.html',1,'']]] +]; diff --git a/search/mag.svg b/search/mag.svg new file mode 100644 index 00000000..9f46b301 --- /dev/null +++ b/search/mag.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/search/mag_d.svg b/search/mag_d.svg new file mode 100644 index 00000000..b9a814c7 --- /dev/null +++ b/search/mag_d.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 00000000..03626f64 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/mag_seld.svg b/search/mag_seld.svg new file mode 100644 index 00000000..6e720dcc --- /dev/null +++ b/search/mag_seld.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 00000000..a3125c04 --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['n64_20flashcart_20menu_0',['N64 Flashcart Menu',['../index.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 00000000..19f76f9d --- /dev/null +++ b/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 00000000..e103a262 --- /dev/null +++ b/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + searchResults.Search(searchValue); + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e + + + + + + +N64FlashcartMenu: settings.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    settings.h File Reference
    +
    +
    + +

    Menu Settings. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Data Structures

    struct  settings_t
     Settings Structure. More...
     
    + + + + + +

    +Functions

    +void settings_load (settings_t *settings)
     
    +void settings_save (settings_t *settings)
     
    +

    Detailed Description

    +

    Menu Settings.

    +

    Data Structure Documentation

    + +

    ◆ settings_t

    + +
    +
    + + + + +
    struct settings_t
    +
    +

    Settings Structure.

    +
    + + + + + + + + + + +
    Data Fields
    +bool +pal60 +Select 60 Hz refresh rate if running on PAL console.
    +bool +show_hidden_files +Show files marked as hidden in the browser.
    +char * +default_directory +Default directory to navigate to when menu loads.
    + +
    +
    +
    + + + + diff --git a/settings_8h_source.html b/settings_8h_source.html new file mode 100644 index 00000000..3a0162cb --- /dev/null +++ b/settings_8h_source.html @@ -0,0 +1,108 @@ + + + + + + + +N64FlashcartMenu: settings.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    settings.h
    +
    +
    +Go to the documentation of this file.
    1
    +
    7#ifndef SETTINGS_H__
    +
    8#define SETTINGS_H__
    +
    9
    +
    10
    +
    12typedef struct {
    +
    14 bool pal60;
    +
    15
    + +
    18
    + + +
    22
    +
    23
    +
    24void settings_load (settings_t *settings);
    +
    25void settings_save (settings_t *settings);
    +
    26
    +
    27
    +
    28#endif
    +
    bool pal60
    Select 60 Hz refresh rate if running on PAL console.
    Definition: settings.h:14
    +
    char * default_directory
    Default directory to navigate to when menu loads.
    Definition: settings.h:20
    +
    bool show_hidden_files
    Show files marked as hidden in the browser.
    Definition: settings.h:17
    +
    Settings Structure.
    Definition: settings.h:12
    +
    + + + + diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 00000000..fe895f2c Binary files /dev/null and b/splitbar.png differ diff --git a/splitbard.png b/splitbard.png new file mode 100644 index 00000000..8367416d Binary files /dev/null and b/splitbard.png differ diff --git a/structcache__metadata__t.html b/structcache__metadata__t.html new file mode 100644 index 00000000..1dbf53ff --- /dev/null +++ b/structcache__metadata__t.html @@ -0,0 +1,159 @@ + + + + + + + +N64FlashcartMenu: cache_metadata_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    cache_metadata_t Struct Reference
    +
    +
    + + + + + + + + + + +

    +Data Fields

    +uint32_t magic
     
    +uint32_t width
     
    +uint32_t height
     
    +uint32_t size
     
    +

    Field Documentation

    + +

    ◆ magic

    + +
    +
    + + + + +
    uint32_t cache_metadata_t::magic
    +
    + +
    +
    + +

    ◆ width

    + +
    +
    + + + + +
    uint32_t cache_metadata_t::width
    +
    + +
    +
    + +

    ◆ height

    + +
    +
    + + + + +
    uint32_t cache_metadata_t::height
    +
    + +
    +
    + +

    ◆ size

    + +
    +
    + + + + +
    uint32_t cache_metadata_t::size
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • background.c
    • +
    +
    + + + + diff --git a/structcomponent__background__t.html b/structcomponent__background__t.html new file mode 100644 index 00000000..d9cde6ef --- /dev/null +++ b/structcomponent__background__t.html @@ -0,0 +1,142 @@ + + + + + + + +N64FlashcartMenu: component_background_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    component_background_t Struct Reference
    +
    +
    + + + + + + + + +

    +Data Fields

    +char * cache_location
     
    +surface_t * image
     
    +rspq_block_t * image_display_list
     
    +

    Field Documentation

    + +

    ◆ cache_location

    + +
    +
    + + + + +
    char* component_background_t::cache_location
    +
    + +
    +
    + +

    ◆ image

    + +
    +
    + + + + +
    surface_t* component_background_t::image
    +
    + +
    +
    + +

    ◆ image_display_list

    + +
    +
    + + + + +
    rspq_block_t* component_background_t::image_display_list
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • background.c
    • +
    +
    + + + + diff --git a/structflashcart__t.html b/structflashcart__t.html new file mode 100644 index 00000000..bdb6ae7f --- /dev/null +++ b/structflashcart__t.html @@ -0,0 +1,115 @@ + + + + + + + +N64FlashcartMenu: flashcart_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    flashcart_t Struct Reference
    +
    +
    + +

    Flashcart Structure. + More...

    + +

    #include <flashcart.h>

    + + + + + + + + + + + + + + +

    +Data Fields

    +flashcart_error_t(* init )(void)
     
    +flashcart_error_t(* deinit )(void)
     
    +flashcart_error_t(* load_rom )(char *rom_path, flashcart_progress_callback_t *progress)
     
    +flashcart_error_t(* load_save )(char *save_path)
     
    +flashcart_error_t(* set_save_type )(flashcart_save_type_t save_type)
     
    +flashcart_error_t(* set_save_writeback )(uint32_t *sectors)
     
    +

    Detailed Description

    +

    Flashcart Structure.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/structipl3__crc32__t.html b/structipl3__crc32__t.html new file mode 100644 index 00000000..d91d4b4b --- /dev/null +++ b/structipl3__crc32__t.html @@ -0,0 +1,125 @@ + + + + + + + +N64FlashcartMenu: ipl3_crc32_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    ipl3_crc32_t Struct Reference
    +
    +
    + + + + + + +

    +Data Fields

    +const uint32_t crc32
     
    +const uint8_t seed
     
    +

    Field Documentation

    + +

    ◆ crc32

    + +
    +
    + + + + +
    const uint32_t ipl3_crc32_t::crc32
    +
    + +
    +
    + +

    ◆ seed

    + +
    +
    + + + + +
    const uint8_t ipl3_crc32_t::seed
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • boot.c
    • +
    +
    + + + + diff --git a/structmp3player__t.html b/structmp3player__t.html new file mode 100644 index 00000000..ee2ee64d --- /dev/null +++ b/structmp3player__t.html @@ -0,0 +1,295 @@ + + + + + + + +N64FlashcartMenu: mp3player_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    mp3player_t Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +bool loaded
     
    +bool io_error
     
    +FIL fil
     
    +FSIZE_t data_start
     
    +mp3dec_t dec
     
    +mp3dec_frame_info_t info
     
    +uint8_t buffer [16 *1024]
     
    +uint8_t * buffer_ptr
     
    +size_t buffer_left
     
    +float duration
     
    +float bitrate
     
    +waveform_t wave
     
    +

    Field Documentation

    + +

    ◆ loaded

    + +
    +
    + + + + +
    bool mp3player_t::loaded
    +
    + +
    +
    + +

    ◆ io_error

    + +
    +
    + + + + +
    bool mp3player_t::io_error
    +
    + +
    +
    + +

    ◆ fil

    + +
    +
    + + + + +
    FIL mp3player_t::fil
    +
    + +
    +
    + +

    ◆ data_start

    + +
    +
    + + + + +
    FSIZE_t mp3player_t::data_start
    +
    + +
    +
    + +

    ◆ dec

    + +
    +
    + + + + +
    mp3dec_t mp3player_t::dec
    +
    + +
    +
    + +

    ◆ info

    + +
    +
    + + + + +
    mp3dec_frame_info_t mp3player_t::info
    +
    + +
    +
    + +

    ◆ buffer

    + +
    +
    + + + + +
    uint8_t mp3player_t::buffer[16 *1024]
    +
    + +
    +
    + +

    ◆ buffer_ptr

    + +
    +
    + + + + +
    uint8_t* mp3player_t::buffer_ptr
    +
    + +
    +
    + +

    ◆ buffer_left

    + +
    +
    + + + + +
    size_t mp3player_t::buffer_left
    +
    + +
    +
    + +

    ◆ duration

    + +
    +
    + + + + +
    float mp3player_t::duration
    +
    + +
    +
    + +

    ◆ bitrate

    + +
    +
    + + + + +
    float mp3player_t::bitrate
    +
    + +
    +
    + +

    ◆ wave

    + +
    +
    + + + + +
    waveform_t mp3player_t::wave
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • mp3_player.c
    • +
    +
    + + + + diff --git a/structpng__decoder__t.html b/structpng__decoder__t.html new file mode 100644 index 00000000..50971b54 --- /dev/null +++ b/structpng__decoder__t.html @@ -0,0 +1,227 @@ + + + + + + + +N64FlashcartMenu: png_decoder_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    png_decoder_t Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + + +

    +Data Fields

    +FIL fil
     
    +spng_ctx * ctx
     
    +struct spng_ihdr ihdr
     
    +surface_t * image
     
    +uint8_t * row_buffer
     
    +int decoded_rows
     
    +png_callback_t * callback
     
    +void * callback_data
     
    +

    Field Documentation

    + +

    ◆ fil

    + +
    +
    + + + + +
    FIL png_decoder_t::fil
    +
    + +
    +
    + +

    ◆ ctx

    + +
    +
    + + + + +
    spng_ctx* png_decoder_t::ctx
    +
    + +
    +
    + +

    ◆ ihdr

    + +
    +
    + + + + +
    struct spng_ihdr png_decoder_t::ihdr
    +
    + +
    +
    + +

    ◆ image

    + +
    +
    + + + + +
    surface_t* png_decoder_t::image
    +
    + +
    +
    + +

    ◆ row_buffer

    + +
    +
    + + + + +
    uint8_t* png_decoder_t::row_buffer
    +
    + +
    +
    + +

    ◆ decoded_rows

    + +
    +
    + + + + +
    int png_decoder_t::decoded_rows
    +
    + +
    +
    + +

    ◆ callback

    + +
    +
    + + + + +
    png_callback_t* png_decoder_t::callback
    +
    + +
    +
    + +

    ◆ callback_data

    + +
    +
    + + + + +
    void* png_decoder_t::callback_data
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • png_decoder.c
    • +
    +
    + + + + diff --git a/structsc64__cmd__t.html b/structsc64__cmd__t.html new file mode 100644 index 00000000..0fdca93e --- /dev/null +++ b/structsc64__cmd__t.html @@ -0,0 +1,142 @@ + + + + + + + +N64FlashcartMenu: sc64_cmd_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    sc64_cmd_t Struct Reference
    +
    +
    + + + + + + + + +

    +Data Fields

    +sc64_cmd_id_t id
     
    +uint32_t arg [2]
     
    +uint32_t rsp [2]
     
    +

    Field Documentation

    + +

    ◆ id

    + +
    +
    + + + + +
    sc64_cmd_id_t sc64_cmd_t::id
    +
    + +
    +
    + +

    ◆ arg

    + +
    +
    + + + + +
    uint32_t sc64_cmd_t::arg[2]
    +
    + +
    +
    + +

    ◆ rsp

    + +
    +
    + + + + +
    uint32_t sc64_cmd_t::rsp[2]
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • sc64_internal.c
    • +
    +
    + + + + diff --git a/structsc64__regs__t.html b/structsc64__regs__t.html new file mode 100644 index 00000000..38cb8345 --- /dev/null +++ b/structsc64__regs__t.html @@ -0,0 +1,159 @@ + + + + + + + +N64FlashcartMenu: sc64_regs_t Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    + +
    sc64_regs_t Struct Reference
    +
    +
    + + + + + + + + + + +

    +Data Fields

    +uint32_t SR_CMD
     
    +uint32_t DATA [2]
     
    +uint32_t IDENTIFIER
     
    +uint32_t KEY
     
    +

    Field Documentation

    + +

    ◆ SR_CMD

    + +
    +
    + + + + +
    uint32_t sc64_regs_t::SR_CMD
    +
    + +
    +
    + +

    ◆ DATA

    + +
    +
    + + + + +
    uint32_t sc64_regs_t::DATA[2]
    +
    + +
    +
    + +

    ◆ IDENTIFIER

    + +
    +
    + + + + +
    uint32_t sc64_regs_t::IDENTIFIER
    +
    + +
    +
    + +

    ◆ KEY

    + +
    +
    + + + + +
    uint32_t sc64_regs_t::KEY
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • sc64_internal.c
    • +
    +
    + + + + diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 00000000..3b443fc6 Binary files /dev/null and b/sync_off.png differ diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 00000000..e08320fb Binary files /dev/null and b/sync_on.png differ diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 00000000..3b725c41 Binary files /dev/null and b/tab_a.png differ diff --git a/tab_ad.png b/tab_ad.png new file mode 100644 index 00000000..e34850ac Binary files /dev/null and b/tab_ad.png differ diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 00000000..e2b4a863 Binary files /dev/null and b/tab_b.png differ diff --git a/tab_bd.png b/tab_bd.png new file mode 100644 index 00000000..91c25249 Binary files /dev/null and b/tab_bd.png differ diff --git a/tab_h.png b/tab_h.png new file mode 100644 index 00000000..fd5cb705 Binary files /dev/null and b/tab_h.png differ diff --git a/tab_hd.png b/tab_hd.png new file mode 100644 index 00000000..2489273d Binary files /dev/null and b/tab_hd.png differ diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 00000000..ab478c95 Binary files /dev/null and b/tab_s.png differ diff --git a/tab_sd.png b/tab_sd.png new file mode 100644 index 00000000..757a565c Binary files /dev/null and b/tab_sd.png differ diff --git a/tabs.css b/tabs.css new file mode 100644 index 00000000..71c8a470 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file diff --git a/utils_8h_source.html b/utils_8h_source.html new file mode 100644 index 00000000..258cf9ec --- /dev/null +++ b/utils_8h_source.html @@ -0,0 +1,99 @@ + + + + + + + +N64FlashcartMenu: utils.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    utils.h
    +
    +
    +
    1#ifndef UTILS_H__
    +
    2#define UTILS_H__
    +
    3
    +
    4
    +
    5#define ALIGN(x, a) (((x) + ((typeof(x))(a) - 1)) & ~((typeof(x))(a) - 1))
    +
    6
    +
    7#define MAX(a,b) ({ typeof(a) _a = a; typeof(b) _b = b; _a > _b ? _a : _b; })
    +
    8#define MIN(a,b) ({ typeof(a) _a = a; typeof(b) _b = b; _a < _b ? _a : _b; })
    +
    9
    +
    10#define KiB(x) ((x) * 1024)
    +
    11#define MiB(x) ((x) * 1024 * 1024)
    +
    12
    +
    13
    +
    14#endif
    +
    + + + + diff --git a/views_8h.html b/views_8h.html new file mode 100644 index 00000000..ba05f703 --- /dev/null +++ b/views_8h.html @@ -0,0 +1,161 @@ + + + + + + + +N64FlashcartMenu: views.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    + +
    views.h File Reference
    +
    +
    + +

    Menu Views. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +void view_startup_init (menu_t *menu)
     
    +void view_startup_display (menu_t *menu, surface_t *display)
     
    +void view_browser_init (menu_t *menu)
     
    +void view_browser_display (menu_t *menu, surface_t *display)
     
    +void view_system_info_init (menu_t *menu)
     
    +void view_system_info_display (menu_t *menu, surface_t *display)
     
    +void view_file_info_init (menu_t *menu)
     
    +void view_file_info_display (menu_t *menu, surface_t *display)
     
    +void view_image_viewer_init (menu_t *menu)
     
    +void view_image_viewer_display (menu_t *menu, surface_t *display)
     
    +void view_music_player_init (menu_t *menu)
     
    +void view_music_player_display (menu_t *menu, surface_t *display)
     
    +void view_credits_init (menu_t *menu)
     
    +void view_credits_display (menu_t *menu, surface_t *display)
     
    +void view_load_init (menu_t *menu)
     
    +void view_load_display (menu_t *menu, surface_t *display)
     
    +void view_error_init (menu_t *menu)
     
    +void view_error_display (menu_t *menu, surface_t *display)
     
    +void view_fault_init (menu_t *menu)
     
    +void view_fault_display (menu_t *menu, surface_t *display)
     
    +void menu_show_error (menu_t *menu, char *error_message)
     
    +

    Detailed Description

    +

    Menu Views.

    +
    + + + + diff --git a/views_8h_source.html b/views_8h_source.html new file mode 100644 index 00000000..53b6d6be --- /dev/null +++ b/views_8h_source.html @@ -0,0 +1,130 @@ + + + + + + + +N64FlashcartMenu: views.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    N64FlashcartMenu +
    +
    +
    + + + + + + + + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + + +
    +
    +
    views.h
    +
    +
    +Go to the documentation of this file.
    1
    +
    7#ifndef VIEWS_H__
    +
    8#define VIEWS_H__
    +
    9
    +
    10
    +
    11#include "../components.h"
    +
    12#include "../menu_state.h"
    +
    13
    +
    14
    +
    20void view_startup_init (menu_t *menu);
    +
    21void view_startup_display (menu_t *menu, surface_t *display);
    +
    22
    +
    23void view_browser_init (menu_t *menu);
    +
    24void view_browser_display (menu_t *menu, surface_t *display);
    +
    25
    +
    26void view_system_info_init (menu_t *menu);
    +
    27void view_system_info_display (menu_t *menu, surface_t *display);
    +
    28
    +
    29void view_file_info_init (menu_t *menu);
    +
    30void view_file_info_display (menu_t *menu, surface_t *display);
    +
    31
    +
    32void view_image_viewer_init (menu_t *menu);
    +
    33void view_image_viewer_display (menu_t *menu, surface_t *display);
    +
    34
    +
    35void view_music_player_init (menu_t *menu);
    +
    36void view_music_player_display (menu_t *menu, surface_t *display);
    +
    37
    +
    38void view_credits_init (menu_t *menu);
    +
    39void view_credits_display (menu_t *menu, surface_t *display);
    +
    40
    +
    41void view_load_init (menu_t *menu);
    +
    42void view_load_display (menu_t *menu, surface_t *display);
    +
    43
    +
    44void view_error_init (menu_t *menu);
    +
    45void view_error_display (menu_t *menu, surface_t *display);
    +
    46
    +
    47void view_fault_init (menu_t *menu);
    +
    48void view_fault_display (menu_t *menu, surface_t *display);
    +
    49
    +
    50void menu_show_error (menu_t *menu, char *error_message);
    +
    51 /* view */
    +
    53
    +
    54
    +
    55#endif
    +
    Menu Structure.
    Definition: menu_state.h:54
    +
    + + + +