<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Posar_un_temporitzador_en_els_emuladors</id>
	<title>Posar un temporitzador en els emuladors - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Posar_un_temporitzador_en_els_emuladors"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Posar_un_temporitzador_en_els_emuladors&amp;action=history"/>
	<updated>2026-08-30T10:26:38Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Posar_un_temporitzador_en_els_emuladors&amp;diff=254911&amp;oldid=prev</id>
		<title>Joan: /* Desenvolupament */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Posar_un_temporitzador_en_els_emuladors&amp;diff=254911&amp;oldid=prev"/>
		<updated>2016-09-21T19:12:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Desenvolupament&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introducció=&lt;br /&gt;
Hi ha emuladors on s'ha de posar moneda, i d'altres que no cal moneda. En aquests casos, el joc és lliure i pot haver-hi la necessitat de limitar la durada de les partides. Per exemple, una moneda, 20 minuts, independentment de les partides que es juga.&lt;br /&gt;
=Desenvolupament=&lt;br /&gt;
S'ha de modificar el frontend de manera que abans de llençar l'emulador, llenço un script que, en background, compta N segons (per exemple 20 minuts), i finalment mata el procés.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
system(&amp;quot;/path_to_frontend/kill_emulator.sh mame4all &amp;amp;&amp;quot;);&lt;br /&gt;
system(&amp;quot;/path_to_mame4all/mame4all rom&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''kill_emulator.sh'' seria tan senzill com això:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash &lt;br /&gt;
t=$1&lt;br /&gt;
#echo $t&lt;br /&gt;
sleep 10&lt;br /&gt;
killall -9 $t&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Aquesta és una manera bèstia de sortir de l'emulador, però ha de funcionar.&lt;br /&gt;
&lt;br /&gt;
A més, el front-end s'ha de modificar per tenir en compte el número de monedes/crèdits que tinc. De fet, es podria passar un segon paràmetre per dir el número de crèdits que tinc i fer num_credits*num_segons_per_credit.&lt;br /&gt;
&lt;br /&gt;
En aquests casos, el botó Coin/Sel (tecla 5) ha de ser lliure, i el moneder físic ha d'estar associat a una altra tecla disponible. Si tots els pins GPIO estan utilitzats, com passa en les màquines de dos jugadors, es pot utilitzar el bótó menys utilitzat (el f, per exemple, l'últim botó del segon jugador).&lt;br /&gt;
&lt;br /&gt;
Canvis en el front-end per gestionar el número de crèdits, i que el número de crèdits surti en pantalla:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define NUM_CREDITS_X 0&lt;br /&gt;
#define NUM_CREDITS_Y 750&lt;br /&gt;
&lt;br /&gt;
#define KEY_COIN SDLK_f&lt;br /&gt;
&lt;br /&gt;
SDL_Surface *srf_num_credits;&lt;br /&gt;
SDL_Rect rect_num_credits;&lt;br /&gt;
&lt;br /&gt;
int num_credits;&lt;br /&gt;
&lt;br /&gt;
num_credits = 0;&lt;br /&gt;
&lt;br /&gt;
quan volem pintar la primera pantalla, ha de sortir num_credits=0&lt;br /&gt;
	//num_credits&lt;br /&gt;
	string str_num_credits = &amp;quot;Num Credits: &amp;quot; + IntToString (num_credits);&lt;br /&gt;
	srf_num_credits = TTF_RenderUTF8_Blended(font1, str_num_credits.c_str(), fgcolor_negre );&lt;br /&gt;
	rect_num_credits.x = NUM_CREDITS_X;&lt;br /&gt;
	rect_num_credits.y = NUM_CREDITS_Y;&lt;br /&gt;
	rect_num_credits.w = srf_num_credits-&amp;gt;w;&lt;br /&gt;
	rect_num_credits.h = srf_num_credits-&amp;gt;h;&lt;br /&gt;
	SDL_FillRect (screen, &amp;amp;rect_num_credits, color_fons_taronja);&lt;br /&gt;
	SDL_BlitSurface(srf_num_credits,NULL,screen,&amp;amp;rect_num_credits)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	case KEY_COIN: //SDLK_f&lt;br /&gt;
		if(key.state == SDL_PRESSED) {&lt;br /&gt;
			num_credits++;&lt;br /&gt;
			string str_num_credits = &amp;quot;Num Credits: &amp;quot; + IntToString (num_credits);&lt;br /&gt;
			srf_num_credits = TTF_RenderUTF8_Blended(font1, str_num_credits.c_str(), fgcolor_negre );&lt;br /&gt;
			rect_num_credits.x = NUM_CREDITS_X;&lt;br /&gt;
			rect_num_credits.y = NUM_CREDITS_Y;&lt;br /&gt;
			rect_num_credits.w = srf_num_credits-&amp;gt;w;&lt;br /&gt;
			rect_num_credits.h = srf_num_credits-&amp;gt;h;&lt;br /&gt;
			SDL_FillRect (screen, &amp;amp;rect_num_credits, color_fons_taronja);&lt;br /&gt;
			SDL_BlitSurface(srf_num_credits,NULL,screen,&amp;amp;rect_num_credits);&lt;br /&gt;
			SDL_UpdateRect(screen,0,0,0,0);&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
quan llenço un emulador, estic gastant un crèdit&lt;br /&gt;
&lt;br /&gt;
if (num_credits &amp;gt; 0) {&lt;br /&gt;
	num_credits--;&lt;br /&gt;
	string str_num_credits = &amp;quot;Num Credits: &amp;quot; + IntToString (num_credits);&lt;br /&gt;
	srf_num_credits = TTF_RenderUTF8_Blended(font1, str_num_credits.c_str(), fgcolor_negre );&lt;br /&gt;
&lt;br /&gt;
	system(&amp;quot;/home/joan/joanillo_arcade_frontend/kill_emulator.sh test_02 &amp;amp;&amp;quot;);&lt;br /&gt;
	system(&amp;quot;/home/joan/joanillo_arcade_frontend/test_02&amp;quot;);&lt;br /&gt;
}	&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A actualitzar_llista() i actualitzar_llista2():&lt;br /&gt;
	SDL_BlitSurface(srf_num_credits,NULL,screen,&amp;amp;rect_num_credits);&lt;br /&gt;
	SDL_UpdateRect(screen,0,0,0,0);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Autor}}, setembre 2016&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>