Skip to content
Snippets Groups Projects
Commit e01d0b93 authored by Jumbo's avatar Jumbo
Browse files

main core software cleanup

parent 6ac94a7e
No related branches found
No related tags found
No related merge requests found
Showing
with 334 additions and 98 deletions
#ifndef OSU_OBJECT_INCLUDES_H_
#define OSU_OBJECT_INCLUDES_H_
#include<inttypes>
typedef struct __attribute__((__packed__)) hit_circle_t{
//32 Byte
char type,
uint_16t x,y,
uint_32t start_timing,
uint_32t check_timing,
uint_32t disappear_timing,
//uint_32t end_timing,
uint_16t hit_radius,
uint_16t approach_radius,
uint_16t gradient_color1,
uint_16t gradient_color2,
uint_16t stroke_color,
uint_8t gradient_direction,
uint_32t reserved
}elem_hit_circle;
typedef struct __attribute__((__packed__)) hit_circle_t{
//32 Byte
char type,
uint_16t x,y,
uint_32t start_timing,
uint_32t disappear_timing,
uint_16t radius,
uint_16t gradient_color1,
uint_16t gradient_color2,
uint_16t stroke_color,
uint_8t gradient_direction,
char padding[10]
}elem_spinner;
/*typedef struct __attribute__((__packed__)) rect_slider_t{
char type;
uint_32t start_timing,
uint_32t check_timing,
uint_32t disappear_timing,
//uint_32t end_timing,
uint_16t hit_radius,
uint_16t approach_radius,
uint_16t x1,y1,x2,y2,x3,y3,x4,y4,
uint_8t gradient_direction,
uint_32t reserved
}elem_rect_slider;*/
#endif
\ No newline at end of file
......@@ -38,7 +38,7 @@ inline void mpeg_set_bg(uint32_t addr) {
// For mpeg
#define mpeg_bg IORD_32DIRECT(ISD_BASE, MPEG_BG_ADDR)
#define mpeg_bg_reset(val) IOWR_32DIRECT(ISD_BASE, MPEG_BG_ADDR, addr);
#define mpeg_bg_reset(val) IOWR_32DIRECT(ISD_BASE, MPEG_BG_ADDR, val);
// Audio: W
// Trig: ADDR
......@@ -80,6 +80,7 @@ inline void mpeg_play_fx(uint32_t addr, uint32_t len) {
#define mpeg_fx_addr IORD_32DIRECT(ISD_BASE, MPEG_MIX_ADDR)
#define mpeg_fx_len IORD_32DIRECT(ISD_BASE, MPEG_MIX_LEN)
#define mpeg_fx_reset(val) IOWR_32DIRECT(ISD_BASE, MPEG_MIX_ADDR, val)
#define mpeg_fx_len_change(val) IOWR_32DIRECT(ISD_BASE, MPEG_MIX_LEN, val)
// Generic Read: RW
// Trig: ADDR
......@@ -111,16 +112,14 @@ inline void mpeg_read(uint32_t addr, uint32_t len, void *buf) {
#define MPEG_IMG_ADDR 52 // - 55
#define MPEG_IMG_WIDTH 56 // - 57
#define MPEG_IMG_HEIGHT 58 // - 59
#define MPEG_IMG_DEST1 60 // - 63
#define MPEG_IMG_DEST2 64 // - 67
#define MPEG_IMG_DEST 60 // - 63
// For main
inline void mpeg_read(uint32_t addr, uint16_t w, uint16_t h, uint64_t dest) {
inline void mpeg_read(uint32_t addr, uint16_t w, uint16_t h, uint32_t dest) {
while(IORD_32DIRECT(ISD_BASE, MPEG_IMG_ADDR));
IOWR_16DIRECT(ISD_BASE, MPEG_IMG_WIDTH, w);
IOWR_16DIRECT(ISD_BASE, MPEG_IMG_HEIGHT, h);
IOWR_32DIRECT(ISD_BASE, MPEG_IMG_DEST1, dest&0xffff);
IOWR_32DIRECT(ISD_BASE, MPEG_IMG_DEST2, (dest&0xffff0000)>>32);
IOWR_32DIRECT(ISD_BASE, MPEG_IMG_DEST, dest);
IOWR_32DIRECT(ISD_BASE, MPEG_IMG_ADDR, addr);
}
......
//
// osufs.h
// osufs
//
// Created by Fang Lu on 11/28/17.
// Copyright © 2017 Fang Lu. All rights reserved.
//
#ifndef osufs_h
#define osufs_h
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
#include <inttypes.h>
#include <stdbool.h>
#include <unistd.h>
typedef struct __attribute__((__packed__)) osu_meta_t {
char magic[4]; // 0 - 3
uint16_t songs; // 4 - 5
uint16_t available_block; // 6 - 7
char _padding[504]; // 8 - 511
} osu_meta;
typedef struct __attribute__((__packed__)) osu_song_t {
char magic[4]; // 0 - 3
uint32_t cover_begin, cover_len; // 4 - 7
uint32_t audio_begin, audio_len; // 8 - 11
uint32_t beatmap_begin, beatmap_len; // 12 - 15
int16_t difficulty; // 16 - 17
int16_t hp_drain; // 18 - 19
int16_t circle_size; // 20 - 21
int16_t approach_rate; // 22 - 23
int16_t slider_mult; // 24 - 25
int16_t slider_tick; // 26 - 27
uint8_t combo_colors[3][8]; // 28 - 51
uint32_t preview_blk_offset; // 52 - 55
uint32_t beatmap_id; // 56 - 59
uint32_t beatmap_setid; // 60 - 63
uint16_t audio_leadin; // 64 - 65
uint16_t stack_leniency; // 66 - 67
uint32_t audio_offset;
//uint32_t cover_offset;
//uint32_t beatmap_offset;
char _padding[242]; // 68 - 319
char title[64]; // 320 - 383
char artist[64]; // 384 - 447
char creator[32]; // 448 - 479
char version[32]; // 480 - 511
} osu_song;
bool osu_read_meta(void *buf);
bool osu_read_song(uint32_t block,void *buf);
//void osu_write_meta(mdev *dev, osu_meta *meta);
//void osu_write_song(mdev *dev, int idx, osu_song *song);
// bool osu_read_audio512(osu_song* o_song,void *buf);
// bool osu_read_cover(osu_song* o_song);
bool osu_init_device(void);
#ifdef __cplusplus
}
#endif
#endif /* osufs_h */
#ifndef SDCARD_H_
#define SDCARD_H_
#include "terasic_lib/terasic_includes.h"
//#include "osufs/osufs.h"
#include "util.h"
#include "terasic_sdcard/sd_lib.h"
#include "../interprocess/interprocess.h"
#include "system.h"
#define audioData ((uint32_t*)AUDIO_0_BASE)
#define audioReady ((uint32_t*)(AUDIO_0_BASE+0x100))
#define audioVol ((uint32_t*)(AUDIO_0_BASE+0x102))
#define VolReset ((uint32_t*)(AUDIO_0_BASE+0x103))
int main() {
printf("Hello world\n");
//from 00000 to 11111
*audioVol = 0x77;
*VolReset = 1;
uint32_t i;
uint8_t j;
uint32_t temp_start,temp_len;
SDLIB_Init();
char bg_buf[516];
uint32_t *buf = ALIGN_32(&bg_buf);
char o_meta_buf[516];
uint32_t *audio_buf1 = ALIGN_32(&o_meta_buf);
char o_song_buf[516];
uint32_t *audio_buf2 = ALIGN_32(&o_song_buf);
//giant probe sequence
SDLIB_ReadBlock512(o_song->cover_begin,buf);
PROBE:
while (1){
if (mpeg_bg){
SDLIB_ReadBlock512(mpeg_bg,buf);
if (strncasecmp(buf, "PLT", 3)!=0) {
printf("Invalid palette magic: %c%c%c\n", buf[0], buf[1], buf[2]);
}
for (int i=0; i<128; i++) {
uint32_t c = (buf[i*3+3]<<16) | (buf[i*3+4]<<8) | buf[i*3+5];
GL_PLWR(i+128, c);
GL_PLWR(i, 0);
}
continue;
}
if (){}
if (mpeg_audio_addr){
goto AUDIO;
}
}
AUDIO:
//SDLIB_ReadBlock512(temp_start,audioData);
usleep(mpeg_audio_start);
for (i=0;i<mpeg_audio_len;++i){
while (!(*audioReady));
if (mpeg_fx_addr){
if (mpeg_fx_len){
SDLIB_ReadBlock512(mpeg_audio_addr+i,audio_buf1);
SDLIB_ReadBlock512(mpeg_fx_addr,audio_buf2);
for (j=0;j<128;++j){
IOWR_32DIRECT(audioData+j,0,audio_buf1[j]+audio_buf2[j]);
}
mpeg_fx_reset(mpeg_fx_addr+1);
mpeg_fx_len_change(mpeg_fx_len-1);
}else{
SDLIB_ReadBlock512(mpeg_audio_addr+i,audioData);
mpeg_fx_reset(0);
}
}else{
SDLIB_ReadBlock512(mpeg_audio_addr+i,audioData);
}
}
mpeg_audio_reset(0);
goto PROBE;
}
#endif
......@@ -3,8 +3,9 @@
#include "terasic_lib/terasic_includes.h"
#include "osufs/osufs.h"
#include "util.h"
#include "../interprocess/interprocess.h"
/*
int main() {
printf("Hello world\n");
//from 00000 to 11111
......@@ -12,26 +13,26 @@ int main() {
//notice: must reset to start the I2C config
*VolReset = 1;
//short int fileP;
char filename[256];
unsigned int fileSize;
int i,j;
osu_meta o_meta;
osu_song o_song;
//osu_meta o_meta;
//osu_song o_song;
osu_init_device();
char o_meta_buf[516];
osu_meta *o_meta = ALIGN_32(&o_meta_buf);
char o_song_buf[516];
osu_meta *o_song = ALIGN_32(&o_song_buf);
while(1){
if (osu_read_meta(&o_meta)){
printf("Sdcard mount success!\n");
printf("magic:%c%c%c%c\n",o_meta.magic[0],o_meta.magic[1],o_meta.magic[2],o_meta.magic[3]);
printf("Song Count:%d\n", o_meta.songs);
goto AUDIO;
}else{
printf("Failed to mount the SDCARD!\r\nPlease retry!\r\n");
}
} // while
......@@ -52,6 +53,6 @@ int main() {
printf("Playback completed\n");
goto AUDIO;
}
*/
#endif
......@@ -13,16 +13,16 @@
#include <assert.h>
bool osu_read_meta(void *buf) {
/*bool osu_read_meta(void *buf) {
return SDLIB_ReadBlock512(0,buf);
}
bool osu_read_song(uint32_t block,void *buf) {
*/
/*bool osu_read_512(uint32_t block,void *buf) {
return SDLIB_ReadBlock512(block,buf);
}
}*/
/*
bool osu_read_audio512(osu_song* o_song,void *buf) {
/*bool osu_read_audio512(osu_song* o_song,void *buf) {
if (o_song->audio_offset > o_song->audio_len)
return 0;
if (SDLIB_ReadBlock512((o_song->audio_begin)+(o_song->audio_offset),buf)){
......@@ -30,7 +30,7 @@ bool osu_read_audio512(osu_song* o_song,void *buf) {
return 1;
}else
return 0;
}
}*/
bool osu_read_cover(osu_song* o_song) {
//read palette data
......@@ -63,7 +63,7 @@ bool osu_read_cover(osu_song* o_song) {
}
}
*/
/*void osu_write_meta(mdev *dev, osu_meta *meta) {
blkio_write(dev, 0, meta);
......@@ -73,6 +73,6 @@ void osu_write_song(mdev *dev, int idx, osu_song *song) {
blkio_write(dev, idx+1, song);
}*/
bool osu_init_device(void) {
/*bool osu_init_device(void) {
return SDLIB_Init();
}
}*/
//
// osufs.h
// osufs
//
// Created by Fang Lu on 11/28/17.
// Copyright © 2017 Fang Lu. All rights reserved.
//
#ifndef osufs_h
#define osufs_h
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
#include <inttypes.h>
#include "blkio.h"
typedef struct __attribute__((__packed__)) osu_meta_t {
char magic[4]; // 0 - 3
uint16_t songs; // 4 - 5
uint32_t available_block; // 6 - 9
char meta_padding[6]; // 10 - 15
// Resources
// Sounds
uint32_t applause_begin; // 16 - 19
uint32_t failsnd_begin; // 20 - 23
uint16_t applause_len; // 24 - 25
uint16_t failsnd_len; // 26 - 27
uint32_t spinnerspin_begin; // 28 - 31
uint32_t spinnerbonus_begin; // 32 - 35
uint16_t spinnerspin_len; // 36 - 37
uint16_t spinnerbonus_len; // 38 - 39
uint32_t menuclick_begin; // 40 - 43
uint32_t menuback_begin; // 44 - 47
uint16_t menuclick_len; // 48 - 49
uint16_t menuback_len; // 50 - 51
uint32_t menuhit_begin; // 52 - 55
uint32_t combobreak_begin; // 56 - 59
uint16_t menuhit_len; // 60 - 61
uint16_t combobreak_len; // 62 - 63
uint32_t drum_hitclap_begin; // 64 - 67
uint32_t drum_hitfinish_begin; // 68 - 71
uint16_t drum_hitclap_len; // 72 - 73
uint16_t drum_hitfinish_len; // 74 - 75
uint32_t drum_hitnormal_begin; // 76 - 79
uint32_t drum_hitwhistle_begin; // 80 - 83
uint16_t drum_hitnormal_len; // 84 - 85
uint16_t drum_hitwhistle_len; // 86 - 87
uint32_t drum_sliderslide_begin; // 88 - 91
uint32_t drum_slidertick_begin; // 92 - 95
uint16_t drum_sliderslide_len; // 96 - 97
uint16_t drum_slidertick_len; // 98 - 99
uint32_t drum_sliderwhistle_begin; // 100 - 103
uint32_t drum_padding_begin; // 104 - 107
uint16_t drum_sliderwhistle_len; // 108 - 109
uint16_t drum_padding_len; // 110 - 111
uint32_t normal_hitclap_begin; // 112 - 115
uint32_t normal_hitfinish_begin; // 116 - 119
uint16_t normal_hitclap_len; // 120 - 121
uint16_t normal_hitfinish_len; // 122 - 123
uint32_t normal_hitnormal_begin; // 124 - 127
uint32_t normal_hitwhistle_begin; // 128 - 131
uint16_t normal_hitnormal_len; // 132 - 133
uint16_t normal_hitwhistle_len; // 134 - 135
uint32_t normal_sliderslide_begin; // 136 - 139
uint32_t normal_slidertick_begin; // 140 - 143
uint16_t normal_sliderslide_len; // 144 - 145
uint16_t normal_slidertick_len; // 146 - 147
uint32_t normal_sliderwhistle_begin; // 148 - 151
uint32_t normal_padding_begin; // 152 - 155
uint16_t normal_sliderwhistle_len; // 156 - 157
uint16_t normal_padding_len; // 158 - 159
uint32_t soft_hitclap_begin; // 160 - 163
uint32_t soft_hitfinish_begin; // 164 - 167
uint16_t soft_hitclap_len; // 168 - 169
uint16_t soft_hitfinish_len; // 170 - 171
uint32_t soft_hitnormal_begin; // 172 - 175
uint32_t soft_hitwhistle_begin; // 176 - 179
uint16_t soft_hitnormal_len; // 180 - 181
uint16_t soft_hitwhistle_len; // 182 - 183
uint32_t soft_sliderslide_begin; // 184 - 187
uint32_t soft_slidertick_begin; // 188 - 191
uint16_t soft_sliderslide_len; // 192 - 193
uint16_t soft_slidertick_len; // 194 - 195
uint32_t soft_sliderwhistle_begin; // 196 - 199
uint32_t soft_padding_begin; // 200 - 203
uint16_t soft_sliderwhistle_len; // 204 - 205
uint16_t soft_padding_len; // 206 - 207
// Image resources
uint32_t cursor_begin;
uint16_t cursor_w;
uint16_t cursor_h;
uint32_t menu_bg_begin;
uint32_t menu_bg_len;
uint32_t menu_back_begin;
uint16_t menu_back_w;
uint16_t menu_back_h;
char _padding[502]; // 10 - 511
} osu_meta;
typedef struct __attribute__((__packed__)) osu_song_t {
char magic[4]; // 0 - 3
uint32_t cover_begin, cover_len; // 4 - 11
uint32_t audio_begin, audio_len; // 12 - 19
uint32_t beatmap_begin, beatmap_len; // 20 - 27
int16_t difficulty; // 28 - 29
int16_t hp_drain; // 30 - 31
int16_t circle_size; // 32 - 33
int16_t approach_rate; // 34 - 35
int16_t slider_mult; // 36 - 37
int16_t slider_tick; // 38 - 39
uint8_t combo_colors[8][3]; // 40 - 63
uint32_t preview_blk_offset; // 64 - 67
uint32_t beatmap_id; // 68 - 71
uint32_t beatmap_setid; // 72 - 75
uint16_t audio_leadin; // 76 - 77
uint16_t stack_leniency; // 78 - 79
//for analyze side only
uint8_t combo_colors_count; //80 - 80
uint8_t combo_colors_start; //81 - 81
void* storyboard; //82 - 89
char _padding[230]; // 94 - 319
char title[64]; // 320 - 383
char artist[64]; // 384 - 447
char creator[32]; // 448 - 479
char version[32]; // 480 - 511
} osu_song;
bool osu_read_meta(void *buf);
bool osu_read_song(uint32_t block,void *buf);
//void osu_write_meta(mdev *dev, osu_meta *meta);
//void osu_write_song(mdev *dev, int idx, osu_song *song);
// bool osu_read_audio512(osu_song* o_song,void *buf);
// bool osu_read_cover(osu_song* o_song);
bool osu_init_device(void);
#ifdef __cplusplus
}
#endif
#endif /* osufs_h */
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment