diff --git a/ediv/CHANGE_LOG.txt b/ediv/CHANGE_LOG.txt index dadf6ec..e36b568 100644 --- a/ediv/CHANGE_LOG.txt +++ b/ediv/CHANGE_LOG.txt @@ -21,7 +21,11 @@ * Naturalmente ha sido necesario adaptar el stub y todas las dlls. De paso he aprovechado para cambiar alguna cosilla por ahํ para quitar warnings (uf la graphics tiene cada warnings mas peligrosos.. variables sin inicializar.. - de to) :P (Er_Makina) + de to) :P (Er_Makina) + * กกCorregido bug de los 154 procesos!! (Er_Makina) + * กกYa se inicializan las variables locales!! (Er_Makina) + * Cambiado max_process en ediv.cfg de 20 a 1024 (Er_Makina) + * Por hacer: controlar el mแximo de procesos permitidos. (Er_Makina) 9/9/2002 -------- diff --git a/ediv/bin/ediv.cfg b/ediv/bin/ediv.cfg index 4227b8d..325cc28 100644 --- a/ediv/bin/ediv.cfg +++ b/ediv/bin/ediv.cfg @@ -3,7 +3,7 @@ motd_host=divsite.net ; Hostname de donde coger el motd [default_compiler_options] -max_process=20 ; Por poner algo xD +max_process=1024 ; Por poner algo xD free_sintax=0 ; No hay sintaxis libre extended_conditions=0 ; No hay condiciones extendidas case_sensitive=0 ; Sin case sensitive diff --git a/ediv/src/dlls/dlls.suo b/ediv/src/dlls/dlls.suo index aa6f6ad..52ded97 100644 Binary files a/ediv/src/dlls/dlls.suo and b/ediv/src/dlls/dlls.suo differ diff --git a/ediv/src/dlls/edivstd/edivstd.c b/ediv/src/dlls/edivstd/edivstd.c index 5950ba5..a1ebc52 100644 --- a/ediv/src/dlls/edivstd/edivstd.c +++ b/ediv/src/dlls/edivstd/edivstd.c @@ -23,7 +23,7 @@ * DIV, tal como las opciones de compilaci๓n, estructura reserved, etc. */ -#include +#include "export.h" //#include "../../shared/varindex.h" #include "main.h" diff --git a/ediv/src/dlls/graphics/graphics.h b/ediv/src/dlls/graphics/graphics.h index 46741be..2dea296 100644 --- a/ediv/src/dlls/graphics/graphics.h +++ b/ediv/src/dlls/graphics/graphics.h @@ -49,3 +49,4 @@ int eDIV_GET_REAL_POINT(FUNCTION_PARAMS) ; int eDIV_GRAPHIC_INFO(FUNCTION_PARAMS) ; int eDIV_FADE(FUNCTION_PARAMS) ; +int Dibuja(SDL_Surface *src , SDL_Rect srcrect , SDL_Rect dstrect , int z , int trans ); diff --git a/ediv/src/dlls/graphics/main.c b/ediv/src/dlls/graphics/main.c index 40a7869..6f200fb 100644 --- a/ediv/src/dlls/graphics/main.c +++ b/ediv/src/dlls/graphics/main.c @@ -144,6 +144,7 @@ int ExportaFuncs(EXPORTAFUNCS_PARAMS) GLOBAL_STRUCT("video_modes",31); _INT("wide",0); _INT("height",0); + _INT("bpp",0); // NUEVO _INT("mode",0); END_STRUCT; @@ -440,9 +441,9 @@ int eDIV_COLLISION(FUNCTION_PARAMS) r1.h = files[f1].mapa[g1].Surface->h ; id2 = a ; g2 = local("graph",id2) ; + f2 = local("file",id2); if ( files[f2].existe == 0 || files[f2].mapa[g2].existe == 0 ) return -1 ; - f2 = local("file",id2) ; r2.x = local("x",id2) ; r2.y = local("y",id2) ; r2.w = files[f2].mapa[g2].Surface->w ; @@ -470,9 +471,9 @@ int eDIV_COLLISION(FUNCTION_PARAMS) r1.h = files[f1].mapa[g1].Surface->h ; id2 = a ; g2 = local("graph",id2) ; + f2 = local("file",id2) ; if ( files[f2].existe == 0 || files[f2].mapa[g2].existe == 0 ) return -1 ; - f2 = local("file",id2) ; r2.x = local("x",id2) ; r2.y = local("y",id2) ; r2.w = files[f2].mapa[g2].Surface->w ; @@ -1208,6 +1209,7 @@ int eDIV_LOAD_FPG(FUNCTION_PARAMS2) } fclose(r);*/ fclose(f); + return 0; } int eDIV_GET_POINT(FUNCTION_PARAMS2) @@ -1270,6 +1272,7 @@ int eDIV_GRAPHIC_INFO(FUNCTION_PARAMS2) case 3: return files[f].mapa[g].cpoint[0].y ; } + return -1; } @@ -1291,7 +1294,7 @@ int eDIV_FADE(FUNCTION_PARAMS2) FILE * fichero ; FILE * memo ; -void frame(FUNCTION_PARAMS2 ) +void frame(FUNCTION_PARAMS) { static int una_vez = 1 ; int i , temp , id , f , g , r , z , trans; @@ -1299,7 +1302,6 @@ void frame(FUNCTION_PARAMS2 ) fichero = fopen( "draw.txt" , "w" ) ; - if ( define_region == 1) { @@ -1316,7 +1318,7 @@ void frame(FUNCTION_PARAMS2 ) //SDL_FillRect( screen , NULL , 0 ) ; SDL_BlitSurface( fondo , NULL , screen , NULL ) ; -// Draws + // Draws z = global("draw_z"); for ( i = 0 ; i <= last_draw ; i++ ) { @@ -1337,7 +1339,8 @@ void frame(FUNCTION_PARAMS2 ) dstrect.y = draws[i].y ; dstrect.w = 0 ; // Se ignora dstrect.h = 0 ; // Se ignora - Dibuja( files[f].mapa[g].Surface , srcrect , dstrect , z ) ; + //Dibuja( files[f].mapa[g].Surface , srcrect , dstrect , z , 0 ) ; + Dibuja( draws[i].Surface , srcrect , dstrect , z , draws[i].t ) ; } } } @@ -1432,6 +1435,8 @@ void frame(FUNCTION_PARAMS2 ) SDL_Flip(screen) ; + fclose(fichero); + } void first_load(FUNCTION_PARAMS2) diff --git a/ediv/src/shared/extern.h b/ediv/src/shared/extern.h index 3f40c07..0919a29 100644 --- a/ediv/src/shared/extern.h +++ b/ediv/src/shared/extern.h @@ -245,8 +245,8 @@ struct _fun_params{ int *pila ; int *sp ; int *mem ; - int *varindex ; - struct _procs_s *procs_s ; + varindex_t *varindex ; + struct _procs_s (*procs_s)[4096] ; int *num_procs ; int *proc_orden ; int *proceso_actual ; diff --git a/ediv/src/shared/varindex.h b/ediv/src/shared/varindex.h index b6235e3..efc68d9 100644 --- a/ediv/src/shared/varindex.h +++ b/ediv/src/shared/varindex.h @@ -54,141 +54,5 @@ varindex_t* varindex; #define reservedptr(nombre) GetVarOffset(v_reserved,nombre) #define localptr(nombre) GetVarOffset(v_local,nombre) -/* -////////////////////////////// -/// GLOBALES /// -////////////////////////////// - -#define _glo_timer 0 -#define _glo_max_process_time 1 -#define _glo_argc 2 -#define _glo_argv 3 - - -////////////////////////////// -/// LOCALES /// -////////////////////////////// - -// Estructura reserved - -#define _res_process_id 4 -#define _res_id_scan 5 -#define _res_process_type 6 -#define _res_type_scan 7 -#define _res_status 8 -#define _res_parameters 9 -#define _res_param_offset 10 -#define _res_program_index 11 -#define _res_stack_pointer 12 -#define _res_is_executed 13 -#define _res_is_painted 14 -#define _res_m8_object 15 -#define _res_old_ctype 16 -#define _res_frame_percent 17 -#define _res_box_x0 18 -#define _res_box_y0 19 -#define _res_box_x1 20 -#define _res_box_y1 21 -#define _res_f_count 22 -#define _res_caller_id 23 - -// Jerarquํa de procesos -#define _loc_father 24 -#define _loc_son 25 -#define _loc_smallbro 26 -#define _loc_bigbro 27 - -// Variables locales varias -#define _loc_priority 28 -#define _loc_ctype 29 -#define _loc_x 30 -#define _loc_y 31 -#define _loc_z 32 -#define _loc_graph 33 -#define _loc_size 34 -#define _loc_angle 35 -#define _loc_region 36 -#define _loc_file 37 -#define _loc_xgraph 38 -#define _loc_height 39 -#define _loc_cnumber 40 -#define _loc_resolution 41 -#define _loc_flags 42 - -#define _glo_draw_z 43 -#define _glo_scroll 44 -#define _glo_fps 45 -*/ - -/*enum { - -////////////////////////////// -/// GLOBALES /// -////////////////////////////// - - _glo_timer, - _glo_max_process_time, - _glo_argc, - _glo_argv, - _glo_draw_z, - _glo_scroll, - _glo_fps, - - -////////////////////////////// -/// LOCALES /// -////////////////////////////// - -// Estructura reserved - - _res_process_id, - _res_id_scan, - _res_process_type, - _res_type_scan, - _res_status, - _res_parameters, - _res_param_offset, - _res_program_index, - _res_stack_pointer, - _res_is_executed, - _res_is_painted, - _res_m8_object, - _res_old_ctype, - _res_frame_percent, - _res_box_x0, - _res_box_y0, - _res_box_x1, - _res_box_y1, - _res_f_count, - _res_caller_id, - -// Jerarquํa de procesos - _loc_father, - _loc_son, - _loc_smallbro, - _loc_bigbro, - -// Variables locales varias - _loc_priority, - _loc_ctype, - _loc_x, - _loc_y, - _loc_z, - _loc_graph, - _loc_size, - _loc_angle, - _loc_region, - _loc_file, - _loc_xgraph, - _loc_height, - _loc_cnumber, - _loc_resolution, - _loc_flags, - _loc_transparency, - - - ___last // por si acaso - -};*/ #endif // __VARINDEX_H \ No newline at end of file diff --git a/ediv/src/stub/ediv_export.c b/ediv/src/stub/ediv_export.c index e0cf564..d349cab 100644 --- a/ediv/src/stub/ediv_export.c +++ b/ediv/src/stub/ediv_export.c @@ -758,7 +758,7 @@ int Call_Entrypoint(int ep, ...) case EDIV_frame: case EDIV_first_load: { - void (*funcion_ep)(void); + void (*funcion_ep)(struct _fun_params* fp); funcion_ep=entrypoints[i].hfuncion; funcion_ep(&fp) ; } diff --git a/ediv/src/stub/fatal.c b/ediv/src/stub/fatal.c index 82351cb..c3fd60b 100644 --- a/ediv/src/stub/fatal.c +++ b/ediv/src/stub/fatal.c @@ -109,6 +109,7 @@ static void eDIV_Parachute(int sig) #endif fprintf(stderr,"\ndbg: num_procesos:%d, proceso actual:%d\n",num_proc_orden,proceso_actual); fprintf(stderr,"dbg: imem:%d, imem_max:%d, mem:0x%X\n",imem,imem_max,mem); + fprintf(stderr,"dbg: iloc:%d, iloc_len:%d, iloc_pub_len:%d, inicio_privadas:%d\n",iloc,iloc_len,iloc_pub_len,inicio_privadas); fprintf(stderr,"dbg: sp:%d, pila:0x%X, pila_max:%d\n",sp,pila,pila_max); if(pila) { int s,e,i; diff --git a/ediv/src/stub/inte.c b/ediv/src/stub/inte.c index 6d76541..dd86887 100644 --- a/ediv/src/stub/inte.c +++ b/ediv/src/stub/inte.c @@ -271,7 +271,7 @@ int proceso( int num ) case lfun://25 NO USADO break ; case lcal://26 - assert(num_proc_orden<153); + //assert(num_proc_orden<153); devolver++ ; v1 = busca_proc_libre() ; procs_s[v1].imem = mem[imem++] ; @@ -311,6 +311,8 @@ int proceso( int num ) break; case ltyp://32 procs_s[num_proc].id = mem[2] + ( num_proc * iloc_len ) ; + reserved("process_id",procs_s[num_proc].id)=procs_s[num_proc].id; + memcpy(&mem[procs_s[num_proc].id],&mem[iloc],iloc_pub_len<<2); if ( procs_s[num_proc].tipo != 0 ) critical_error(3); // redefinici๓n del tipo de proceso procs_s[num_proc].tipo = mem[ imem++ ] ; diff --git a/ediv/src/stub/inte.h b/ediv/src/stub/inte.h index 6858c2d..3e0ed0d 100644 --- a/ediv/src/stub/inte.h +++ b/ediv/src/stub/inte.h @@ -183,9 +183,9 @@ -//อออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออ +//----------------------------------------------------------------------------- // Variables locales del sistema de sprites (las primeras no son pฃblicas) -//อออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออออ +//----------------------------------------------------------------------------- #define _Id 0 //Para comprobar validez de accesos externos #define _IdScan 1 //Recorrido del resto de los procesos (p.ej.colisiones) diff --git a/ediv/src/stub/kernel.c b/ediv/src/stub/kernel.c index dc367f3..58c6491 100644 --- a/ediv/src/stub/kernel.c +++ b/ediv/src/stub/kernel.c @@ -24,6 +24,8 @@ * */ +// se supone ke todo esto sirve para algo? (Er_Makina) + #include #include diff --git a/ediv/src/stub/stub.c b/ediv/src/stub/stub.c index 09999c8..6971798 100644 --- a/ediv/src/stub/stub.c +++ b/ediv/src/stub/stub.c @@ -307,7 +307,7 @@ int main(int argc, char* argv[]) fprintf(file_tiempo , "fps: %d\n" , 1000/(tiempo - tiempo_pre) ) ; */ - // PETA EN AMD???? + // PETA EN AMD???? <-- y esto? a mi no me peta.. (Er_Makina) tiempo_i ++ ; if ( tiempo_i > 99 ) tiempo_i = 0 ; tiempo[ tiempo_i ] = SDL_GetTicks() ; diff --git a/ediv/src/visual c/ediv_ws.suo b/ediv/src/visual c/ediv_ws.suo index d60601b..a2d2059 100644 Binary files a/ediv/src/visual c/ediv_ws.suo and b/ediv/src/visual c/ediv_ws.suo differ