Mercurial > repos > blastem
annotate libblastem.c @ 2005:3ce38692a3f2
Set initial pan bits in YM2612 register array and not just the separate lr field of the channel. This fixes an issue in which some channels would be silent in VGM log output
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 11 Oct 2020 22:42:10 -0700 |
parents | f77d36a975ff |
children | 0f2855db27ea 0343f0d5add0 |
rev | line source |
---|---|
1688
395f684c5379
Fixed the most glaring issues in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1687
diff
changeset
|
1 #include <stdlib.h> |
395f684c5379
Fixed the most glaring issues in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1687
diff
changeset
|
2 #include <string.h> |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 #include "libretro.h" |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 #include "system.h" |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 #include "util.h" |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 #include "vdp.h" |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 #include "render.h" |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 #include "io.h" |
1924
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
9 #include "genesis.h" |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
10 #include "sms.h" |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 static retro_environment_t retro_environment; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 RETRO_API void retro_set_environment(retro_environment_t re) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 retro_environment = re; |
1864
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
16 # define input_descriptor_macro(pad_num) \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
17 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_LEFT, "D-Pad Left" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
18 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_UP, "D-Pad Up" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
19 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_DOWN, "D-Pad Down" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
20 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_RIGHT, "D-Pad Right" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
21 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_B, "A" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
22 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_A, "B" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
23 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_X, "Y" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
24 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_Y, "X" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
25 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_L, "Z" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
26 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_R, "C" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
27 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_SELECT, "Mode" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
28 { pad_num, RETRO_DEVICE_JOYPAD, 0, RETRO_DEVICE_ID_JOYPAD_START, "Start" }, \ |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
29 |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
30 static const struct retro_input_descriptor desc[] = { |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
31 input_descriptor_macro(0) |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
32 input_descriptor_macro(1) |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
33 input_descriptor_macro(2) |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
34 input_descriptor_macro(3) |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
35 input_descriptor_macro(4) |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
36 input_descriptor_macro(5) |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
37 input_descriptor_macro(6) |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
38 input_descriptor_macro(7) |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
39 { 0 }, |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
40 }; |
96323d73b8ab
add input descriptors
hizzlekizzle <hizzlekizzle@users.noreply.github.com>
parents:
1822
diff
changeset
|
41 |
1882
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
42 re(RETRO_ENVIRONMENT_SET_INPUT_DESCRIPTORS, (void *)desc); |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
43 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
44 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
45 static retro_video_refresh_t retro_video_refresh; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 RETRO_API void retro_set_video_refresh(retro_video_refresh_t rvf) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
47 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
48 retro_video_refresh = rvf; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
49 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
50 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
51 RETRO_API void retro_set_audio_sample(retro_audio_sample_t ras) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
52 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
53 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
54 |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
55 static retro_audio_sample_batch_t retro_audio_sample_batch; |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
56 RETRO_API void retro_set_audio_sample_batch(retro_audio_sample_batch_t rasb) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
57 { |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
58 retro_audio_sample_batch = rasb; |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
59 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
60 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
61 static retro_input_poll_t retro_input_poll; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
62 RETRO_API void retro_set_input_poll(retro_input_poll_t rip) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
63 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
64 retro_input_poll = rip; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
65 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
66 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
67 static retro_input_state_t retro_input_state; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
68 RETRO_API void retro_set_input_state(retro_input_state_t ris) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
69 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
70 retro_input_state = ris; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
71 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
72 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
73 int headless = 0; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
74 int exit_after = 0; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
75 int z80_enabled = 1; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
76 char *save_filename; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
77 tern_node *config; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
78 uint8_t use_native_states = 1; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
79 system_header *current_system; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
80 system_media media; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
81 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
82 RETRO_API void retro_init(void) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
83 { |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
84 render_audio_initialized(RENDER_AUDIO_S16, 53693175 / (7 * 6 * 4), 2, 4, sizeof(int16_t)); |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
85 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
86 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
87 RETRO_API void retro_deinit(void) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
88 { |
1691
e96d0d3bec7f
Don't leak a system context when a game is unloaded
Mike Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
89 if (current_system) { |
e96d0d3bec7f
Don't leak a system context when a game is unloaded
Mike Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
90 retro_unload_game(); |
e96d0d3bec7f
Don't leak a system context when a game is unloaded
Mike Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
91 } |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
92 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
93 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
94 RETRO_API unsigned retro_api_version(void) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
95 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
96 return RETRO_API_VERSION; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
97 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
98 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
99 RETRO_API void retro_get_system_info(struct retro_system_info *info) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
100 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
101 info->library_name = "BlastEm"; |
1819
4fb9af0c65b6
Update verison number in liblastem.c
Mike Pavone <pavone@retrodev.com>
parents:
1818
diff
changeset
|
102 info->library_version = "0.6.3-pre"; //TODO: share this with blastem.c |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
103 info->valid_extensions = "md|gen|sms|bin|rom"; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
104 info->need_fullpath = 0; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
105 info->block_extract = 0; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
106 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
107 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
108 static vid_std video_standard; |
1695
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
109 static uint32_t last_width, last_height; |
1882
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
110 static uint32_t overscan_top, overscan_bot, overscan_left, overscan_right; |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
111 static void update_overscan(void) |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
112 { |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
113 uint8_t overscan; |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
114 retro_environment(RETRO_ENVIRONMENT_GET_OVERSCAN, &overscan); |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
115 if (overscan) { |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
116 overscan_top = overscan_bot = overscan_left = overscan_right = 0; |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
117 } else { |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
118 if (video_standard == VID_NTSC) { |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
119 overscan_top = 11; |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
120 overscan_bot = 8; |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
121 overscan_left = 13; |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
122 overscan_right = 14; |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
123 } else { |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
124 overscan_top = 30; |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
125 overscan_bot = 24; |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
126 overscan_left = 13; |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
127 overscan_right = 14; |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
128 } |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
129 } |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
130 } |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
131 |
1889
377f110e4cea
Report more accurate frame and sample rates to frontend in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1882
diff
changeset
|
132 static int32_t sample_rate; |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
133 RETRO_API void retro_get_system_av_info(struct retro_system_av_info *info) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
134 { |
1882
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
135 update_overscan(); |
1694
9e4dd1595f37
Fix aspect ratio for H32 games
Michael Pavone <pavone@retrodev.com>
parents:
1691
diff
changeset
|
136 last_width = LINEBUF_SIZE; |
1882
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
137 info->geometry.base_width = info->geometry.max_width = LINEBUF_SIZE - (overscan_left + overscan_right); |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
138 info->geometry.base_height = (video_standard == VID_NTSC ? 243 : 294) - (overscan_top + overscan_bot); |
1695
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
139 last_height = info->geometry.base_height; |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
140 info->geometry.max_height = info->geometry.base_height * 2; |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
141 info->geometry.aspect_ratio = 0; |
1889
377f110e4cea
Report more accurate frame and sample rates to frontend in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1882
diff
changeset
|
142 double master_clock = video_standard == VID_NTSC ? 53693175 : 53203395; |
377f110e4cea
Report more accurate frame and sample rates to frontend in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1882
diff
changeset
|
143 double lines = video_standard == VID_NTSC ? 262 : 313; |
377f110e4cea
Report more accurate frame and sample rates to frontend in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1882
diff
changeset
|
144 info->timing.fps = master_clock / (3420.0 * lines); |
377f110e4cea
Report more accurate frame and sample rates to frontend in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1882
diff
changeset
|
145 info->timing.sample_rate = master_clock / (7 * 6 * 24); //sample rate of YM2612 |
377f110e4cea
Report more accurate frame and sample rates to frontend in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1882
diff
changeset
|
146 sample_rate = info->timing.sample_rate; |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
147 render_audio_initialized(RENDER_AUDIO_S16, info->timing.sample_rate, 2, 4, sizeof(int16_t)); |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
148 //force adjustment of resampling parameters since target sample rate may have changed slightly |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
149 current_system->set_speed_percent(current_system, 100); |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
150 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
151 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
152 RETRO_API void retro_set_controller_port_device(unsigned port, unsigned device) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
153 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
154 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
155 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
156 /* Resets the current game. */ |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
157 RETRO_API void retro_reset(void) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
158 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
159 current_system->soft_reset(current_system); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
160 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
161 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
162 /* Runs the game for one video frame. |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
163 * During retro_run(), input_poll callback must be called at least once. |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
164 * |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
165 * If a frame is not rendered for reasons where a game "dropped" a frame, |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
166 * this still counts as a frame, and retro_run() should explicitly dupe |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
167 * a frame if GET_CAN_DUPE returns true. |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
168 * In this case, the video callback can take a NULL argument for data. |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
169 */ |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
170 static uint8_t started; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
171 RETRO_API void retro_run(void) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
172 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
173 if (started) { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
174 current_system->resume_context(current_system); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
175 } else { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
176 current_system->start_context(current_system, NULL); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
177 started = 1; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
178 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
179 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
180 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
181 /* Returns the amount of data the implementation requires to serialize |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
182 * internal state (save states). |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
183 * Between calls to retro_load_game() and retro_unload_game(), the |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
184 * returned size is never allowed to be larger than a previous returned |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
185 * value, to ensure that the frontend can allocate a save state buffer once. |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
186 */ |
1690
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
187 static size_t serialize_size_cache; |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
188 RETRO_API size_t retro_serialize_size(void) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
189 { |
1690
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
190 if (!serialize_size_cache) { |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
191 uint8_t *tmp = current_system->serialize(current_system, &serialize_size_cache); |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
192 free(tmp); |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
193 } |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
194 return serialize_size_cache; |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
195 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
196 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
197 /* Serializes internal state. If failed, or size is lower than |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
198 * retro_serialize_size(), it should return false, true otherwise. */ |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
199 RETRO_API bool retro_serialize(void *data, size_t size) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
200 { |
1690
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
201 size_t actual_size; |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
202 uint8_t *tmp = current_system->serialize(current_system, &actual_size); |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
203 if (actual_size > size) { |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
204 free(tmp); |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
205 return 0; |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
206 } |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
207 memcpy(data, tmp, actual_size); |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
208 free(tmp); |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
209 return 1; |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
210 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
211 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
212 RETRO_API bool retro_unserialize(const void *data, size_t size) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
213 { |
1690
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
214 current_system->deserialize(current_system, (uint8_t *)data, size); |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
215 return 0; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
216 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
217 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
218 RETRO_API void retro_cheat_reset(void) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
219 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
220 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
221 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
222 RETRO_API void retro_cheat_set(unsigned index, bool enabled, const char *code) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
223 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
224 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
225 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
226 /* Loads a game. */ |
1924
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
227 static system_type stype; |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
228 RETRO_API bool retro_load_game(const struct retro_game_info *game) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
229 { |
1690
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1689
diff
changeset
|
230 serialize_size_cache = 0; |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
231 if (game->path) { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
232 media.dir = path_dirname(game->path); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
233 media.name = basename_no_extension(game->path); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
234 media.extension = path_extension(game->path); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
235 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
236 media.buffer = malloc(nearest_pow2(game->size)); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
237 memcpy(media.buffer, game->data, game->size); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
238 media.size = game->size; |
1924
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
239 stype = detect_system_type(&media); |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
240 current_system = alloc_config_system(stype, &media, 0, 0); |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
241 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
242 unsigned format = RETRO_PIXEL_FORMAT_XRGB8888; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
243 retro_environment(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &format); |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
244 |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
245 return current_system != NULL; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
246 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
247 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
248 /* Loads a "special" kind of game. Should not be used, |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
249 * except in extreme cases. */ |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
250 RETRO_API bool retro_load_game_special(unsigned game_type, const struct retro_game_info *info, size_t num_info) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
251 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
252 return retro_load_game(info); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
253 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
254 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
255 /* Unloads a currently loaded game. */ |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
256 RETRO_API void retro_unload_game(void) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
257 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
258 free(media.dir); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
259 free(media.name); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
260 free(media.extension); |
1691
e96d0d3bec7f
Don't leak a system context when a game is unloaded
Mike Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
261 media.dir = media.name = media.extension = NULL; |
e96d0d3bec7f
Don't leak a system context when a game is unloaded
Mike Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
262 //buffer is freed by the context |
e96d0d3bec7f
Don't leak a system context when a game is unloaded
Mike Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
263 media.buffer = NULL; |
e96d0d3bec7f
Don't leak a system context when a game is unloaded
Mike Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
264 current_system->free_context(current_system); |
e96d0d3bec7f
Don't leak a system context when a game is unloaded
Mike Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
265 current_system = NULL; |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
266 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
267 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
268 /* Gets region of game. */ |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
269 RETRO_API unsigned retro_get_region(void) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
270 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
271 return video_standard == VID_NTSC ? RETRO_REGION_NTSC : RETRO_REGION_PAL; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
272 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
273 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
274 /* Gets region of memory. */ |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
275 RETRO_API void *retro_get_memory_data(unsigned id) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
276 { |
1926
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
277 switch (id) { |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
278 case RETRO_MEMORY_SYSTEM_RAM: |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
279 switch (stype) { |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
280 case SYSTEM_GENESIS: { |
1924
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
281 genesis_context *gen = (genesis_context *)current_system; |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
282 return (uint8_t *)gen->work_ram; |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
283 } |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
284 #ifndef NO_Z80 |
1926
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
285 case SYSTEM_SMS: { |
1924
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
286 sms_context *sms = (sms_context *)current_system; |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
287 return sms->ram; |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
288 } |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
289 #endif |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
290 } |
1926
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
291 break; |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
292 case RETRO_MEMORY_SAVE_RAM: |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
293 if (stype == SYSTEM_GENESIS) { |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
294 genesis_context *gen = (genesis_context *)current_system; |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
295 if (gen->save_type != SAVE_NONE) |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
296 return gen->save_storage; |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
297 } |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
298 break; |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
299 default: |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
300 break; |
1924
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
301 } |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
302 return NULL; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
303 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
304 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
305 RETRO_API size_t retro_get_memory_size(unsigned id) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
306 { |
1926
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
307 switch (id) { |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
308 case RETRO_MEMORY_SYSTEM_RAM: |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
309 switch (stype) { |
1924
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
310 case SYSTEM_GENESIS: |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
311 return RAM_WORDS * sizeof(uint16_t); |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
312 #ifndef NO_Z80 |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
313 case SYSTEM_SMS: |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
314 return SMS_RAM_SIZE; |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
315 #endif |
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
316 } |
1926
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
317 break; |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
318 case RETRO_MEMORY_SAVE_RAM: |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
319 if (stype == SYSTEM_GENESIS) { |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
320 genesis_context *gen = (genesis_context *)current_system; |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
321 if (gen->save_type != SAVE_NONE) |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
322 return gen->save_size; |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
323 } |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
324 break; |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
325 default: |
94f37e4b1469
Add memory hook for genesis/megadrive save and cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1924
diff
changeset
|
326 break; |
1924
81b059e3ded6
Add memory hook for cheat/rumble/cheevos support
negativeExponent <negativeExponent@users.noreply.github.com>
parents:
1889
diff
changeset
|
327 } |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
328 return 0; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
329 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
330 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
331 //blastem render backend API implementation |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
332 uint32_t render_map_color(uint8_t r, uint8_t g, uint8_t b) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
333 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
334 return r << 16 | g << 8 | b; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
335 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
336 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
337 uint8_t render_create_window(char *caption, uint32_t width, uint32_t height, window_close_handler close_handler) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
338 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
339 //not supported in lib build |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
340 return 0; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
341 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
342 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
343 void render_destroy_window(uint8_t which) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
344 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
345 //not supported in lib build |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
346 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
347 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
348 static uint32_t fb[LINEBUF_SIZE * 294 * 2]; |
1695
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
349 static uint8_t last_fb; |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
350 uint32_t *render_get_framebuffer(uint8_t which, int *pitch) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
351 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
352 *pitch = LINEBUF_SIZE * sizeof(uint32_t); |
1695
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
353 if (which != last_fb) { |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
354 *pitch = *pitch * 2; |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
355 } |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
356 |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
357 if (which) { |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
358 return fb + LINEBUF_SIZE; |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
359 } else { |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
360 return fb; |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
361 } |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
362 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
363 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
364 void render_framebuffer_updated(uint8_t which, int width) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
365 { |
1882
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
366 unsigned height = (video_standard == VID_NTSC ? 243 : 294) - (overscan_top + overscan_bot); |
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
367 width -= (overscan_left + overscan_right); |
1695
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
368 unsigned base_height = height; |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
369 if (which != last_fb) { |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
370 height *= 2; |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
371 last_fb = which; |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
372 } |
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
373 if (width != last_width || height != last_height) { |
1694
9e4dd1595f37
Fix aspect ratio for H32 games
Michael Pavone <pavone@retrodev.com>
parents:
1691
diff
changeset
|
374 struct retro_game_geometry geometry = { |
9e4dd1595f37
Fix aspect ratio for H32 games
Michael Pavone <pavone@retrodev.com>
parents:
1691
diff
changeset
|
375 .base_width = width, |
9e4dd1595f37
Fix aspect ratio for H32 games
Michael Pavone <pavone@retrodev.com>
parents:
1691
diff
changeset
|
376 .base_height = height, |
1695
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
377 .aspect_ratio = (float)LINEBUF_SIZE / base_height |
1694
9e4dd1595f37
Fix aspect ratio for H32 games
Michael Pavone <pavone@retrodev.com>
parents:
1691
diff
changeset
|
378 }; |
9e4dd1595f37
Fix aspect ratio for H32 games
Michael Pavone <pavone@retrodev.com>
parents:
1691
diff
changeset
|
379 retro_environment(RETRO_ENVIRONMENT_SET_GEOMETRY, &geometry); |
9e4dd1595f37
Fix aspect ratio for H32 games
Michael Pavone <pavone@retrodev.com>
parents:
1691
diff
changeset
|
380 last_width = width; |
1695
3c34122754ac
Properly support interlace in libretro build
Michael Pavone <pavone@retrodev.com>
parents:
1694
diff
changeset
|
381 last_height = height; |
1694
9e4dd1595f37
Fix aspect ratio for H32 games
Michael Pavone <pavone@retrodev.com>
parents:
1691
diff
changeset
|
382 } |
1882
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
383 retro_video_refresh(fb + overscan_left + LINEBUF_SIZE * overscan_top, width, height, LINEBUF_SIZE * sizeof(uint32_t)); |
1980
81df9aa2de9b
Less hacky run on audio thread mode
Michael Pavone <pavone@retrodev.com>
parents:
1932
diff
changeset
|
384 system_request_exit(current_system, 0); |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
385 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
386 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
387 uint8_t render_get_active_framebuffer(void) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
388 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
389 return 0; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
390 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
391 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
392 void render_set_video_standard(vid_std std) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
393 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
394 video_standard = std; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
395 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
396 |
1822
8500bd987dda
Make libretro target successfully build for Windows and possibly Mac
Mike Pavone <pavone@retrodev.com>
parents:
1819
diff
changeset
|
397 int render_fullscreen(void) |
8500bd987dda
Make libretro target successfully build for Windows and possibly Mac
Mike Pavone <pavone@retrodev.com>
parents:
1819
diff
changeset
|
398 { |
8500bd987dda
Make libretro target successfully build for Windows and possibly Mac
Mike Pavone <pavone@retrodev.com>
parents:
1819
diff
changeset
|
399 return 1; |
8500bd987dda
Make libretro target successfully build for Windows and possibly Mac
Mike Pavone <pavone@retrodev.com>
parents:
1819
diff
changeset
|
400 } |
8500bd987dda
Make libretro target successfully build for Windows and possibly Mac
Mike Pavone <pavone@retrodev.com>
parents:
1819
diff
changeset
|
401 |
1881
55198fc9cc1f
Don't render lines that are cropped by overscan. Allows submitting frame earlier when bottom overscan is non-zero which can reduce latency in some cases
Mike Pavone <pavone@retrodev.com>
parents:
1868
diff
changeset
|
402 uint32_t render_overscan_top() |
55198fc9cc1f
Don't render lines that are cropped by overscan. Allows submitting frame earlier when bottom overscan is non-zero which can reduce latency in some cases
Mike Pavone <pavone@retrodev.com>
parents:
1868
diff
changeset
|
403 { |
1882
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
404 return overscan_top; |
1881
55198fc9cc1f
Don't render lines that are cropped by overscan. Allows submitting frame earlier when bottom overscan is non-zero which can reduce latency in some cases
Mike Pavone <pavone@retrodev.com>
parents:
1868
diff
changeset
|
405 } |
55198fc9cc1f
Don't render lines that are cropped by overscan. Allows submitting frame earlier when bottom overscan is non-zero which can reduce latency in some cases
Mike Pavone <pavone@retrodev.com>
parents:
1868
diff
changeset
|
406 |
55198fc9cc1f
Don't render lines that are cropped by overscan. Allows submitting frame earlier when bottom overscan is non-zero which can reduce latency in some cases
Mike Pavone <pavone@retrodev.com>
parents:
1868
diff
changeset
|
407 uint32_t render_overscan_bot() |
55198fc9cc1f
Don't render lines that are cropped by overscan. Allows submitting frame earlier when bottom overscan is non-zero which can reduce latency in some cases
Mike Pavone <pavone@retrodev.com>
parents:
1868
diff
changeset
|
408 { |
1882
62e8a8833e39
Implement overscan crop in libretro target
Michael Pavone <pavone@retrodev.com>
parents:
1881
diff
changeset
|
409 return overscan_bot; |
1881
55198fc9cc1f
Don't render lines that are cropped by overscan. Allows submitting frame earlier when bottom overscan is non-zero which can reduce latency in some cases
Mike Pavone <pavone@retrodev.com>
parents:
1868
diff
changeset
|
410 } |
55198fc9cc1f
Don't render lines that are cropped by overscan. Allows submitting frame earlier when bottom overscan is non-zero which can reduce latency in some cases
Mike Pavone <pavone@retrodev.com>
parents:
1868
diff
changeset
|
411 |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
412 void process_events() |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
413 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
414 static int16_t prev_state[2][RETRO_DEVICE_ID_JOYPAD_L2]; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
415 static const uint8_t map[] = { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
416 BUTTON_A, BUTTON_X, BUTTON_MODE, BUTTON_START, DPAD_UP, DPAD_DOWN, |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
417 DPAD_LEFT, DPAD_RIGHT, BUTTON_B, BUTTON_Y, BUTTON_Z, BUTTON_C |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
418 }; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
419 //TODO: handle other input device types |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
420 //TODO: handle more than 2 ports when appropriate |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
421 retro_input_poll(); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
422 for (int port = 0; port < 2; port++) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
423 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
424 for (int id = RETRO_DEVICE_ID_JOYPAD_B; id < RETRO_DEVICE_ID_JOYPAD_L2; id++) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
425 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
426 int16_t new_state = retro_input_state(port, RETRO_DEVICE_JOYPAD, 0, id); |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
427 if (new_state != prev_state[port][id]) { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
428 if (new_state) { |
1689
7f42a93f18a4
Have a suitable default IO port configuration when nonIO is present from the config file. Fixed off by one in processing gamepad button events in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1688
diff
changeset
|
429 current_system->gamepad_down(current_system, port + 1, map[id]); |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
430 } else { |
1689
7f42a93f18a4
Have a suitable default IO port configuration when nonIO is present from the config file. Fixed off by one in processing gamepad button events in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1688
diff
changeset
|
431 current_system->gamepad_up(current_system, port + 1, map[id]); |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
432 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
433 prev_state[port][id] = new_state; |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
434 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
435 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
436 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
437 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
438 |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
439 void render_errorbox(char *title, char *message) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
440 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
441 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
442 void render_warnbox(char *title, char *message) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
443 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
444 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
445 void render_infobox(char *title, char *message) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
446 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
447 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
448 |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
449 uint8_t render_is_audio_sync(void) |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
450 { |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
451 //whether this is true depends on the libretro frontend implementation |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
452 //but the sync to audio path works better here |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
453 return 1; |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
454 } |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
455 |
1932
b387f1c5a1d0
WIP new sync mode that runs emulation on audio thread
Michael Pavone <pavone@retrodev.com>
parents:
1927
diff
changeset
|
456 uint8_t render_should_release_on_exit(void) |
b387f1c5a1d0
WIP new sync mode that runs emulation on audio thread
Michael Pavone <pavone@retrodev.com>
parents:
1927
diff
changeset
|
457 { |
b387f1c5a1d0
WIP new sync mode that runs emulation on audio thread
Michael Pavone <pavone@retrodev.com>
parents:
1927
diff
changeset
|
458 return 0; |
b387f1c5a1d0
WIP new sync mode that runs emulation on audio thread
Michael Pavone <pavone@retrodev.com>
parents:
1927
diff
changeset
|
459 } |
b387f1c5a1d0
WIP new sync mode that runs emulation on audio thread
Michael Pavone <pavone@retrodev.com>
parents:
1927
diff
changeset
|
460 |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
461 void render_buffer_consumed(audio_source *src) |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
462 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
463 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
464 |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
465 void *render_new_audio_opaque(void) |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
466 { |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
467 return NULL; |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
468 } |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
469 |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
470 void render_free_audio_opaque(void *opaque) |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
471 { |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
472 } |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
473 |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
474 void render_lock_audio(void) |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
475 { |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
476 } |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
477 |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
478 void render_unlock_audio() |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
479 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
480 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
481 |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
482 uint32_t render_min_buffered(void) |
1817
03895a4585c3
Fix build breakage for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1695
diff
changeset
|
483 { |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
484 //not actually used in the sync to audio path |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
485 return 4; |
1817
03895a4585c3
Fix build breakage for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1695
diff
changeset
|
486 } |
03895a4585c3
Fix build breakage for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1695
diff
changeset
|
487 |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
488 uint32_t render_audio_syncs_per_sec(void) |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
489 { |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
490 return 0; |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
491 } |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
492 |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
493 void render_audio_created(audio_source *src) |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
494 { |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
495 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
496 |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
497 void render_do_audio_ready(audio_source *src) |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
498 { |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
499 int16_t *tmp = src->front; |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
500 src->front = src->back; |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
501 src->back = tmp; |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
502 src->front_populated = 1; |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
503 src->buffer_pos = 0; |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
504 if (all_sources_ready()) { |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
505 int16_t buffer[8]; |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
506 int min_remaining_out; |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
507 mix_and_convert((uint8_t *)buffer, sizeof(buffer), &min_remaining_out); |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
508 retro_audio_sample_batch(buffer, sizeof(buffer)/(2*sizeof(*buffer))); |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
509 } |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
510 } |
1688
395f684c5379
Fixed the most glaring issues in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1687
diff
changeset
|
511 |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
512 void render_source_paused(audio_source *src, uint8_t remaining_sources) |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
513 { |
1927
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
514 } |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
515 |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
516 void render_source_resumed(audio_source *src) |
9fd4bedc1a31
Update libretro target to use render_audio shared audio code
Mike Pavone <pavone@retrodev.com>
parents:
1926
diff
changeset
|
517 { |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
518 } |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
519 |
2001
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
520 void render_set_external_sync(uint8_t ext_sync_on) |
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
521 { |
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
522 } |
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
523 |
1687
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
524 void bindings_set_mouse_mode(uint8_t mode) |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
525 { |
6c54bb5fe3b3
Hacky WIP libertro implementation
Michael Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
526 } |
1818
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
527 |
2001
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
528 void bindings_release_capture(void) |
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
529 { |
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
530 } |
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
531 |
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
532 void bindings_reacquire_capture(void) |
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
533 { |
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
534 } |
f77d36a975ff
Add stubs for some functions in libblastem.c to fix link failures on windows libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1980
diff
changeset
|
535 |
1818
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
536 extern const char rom_db_data[]; |
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
537 char *read_bundled_file(char *name, uint32_t *sizeret) |
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
538 { |
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
539 if (!strcmp(name, "rom.db")) { |
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
540 *sizeret = strlen(rom_db_data); |
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
541 char *ret = malloc(*sizeret+1); |
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
542 memcpy(ret, rom_db_data, *sizeret + 1); |
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
543 return ret; |
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
544 } |
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
545 return NULL; |
243f3a7247f9
Include ROM DB in library binary for libretro target
Mike Pavone <pavone@retrodev.com>
parents:
1817
diff
changeset
|
546 } |