On Fri, May 07, 2010 at 04:07:17PM +0200, Guillaume Cottenceau wrote:
> >> I did a git rebase between your master and our redesign branch to make
> >> the new integration branch. And it has your commits
> >>
> >> http://github.com/kthakore/frozen-bubble/commits/integration?page=4
> >
> > I'll try to look at that soon!
> 
> My approach to reviewing: instead of reviewing each commit separately,
> which would make little sense because of the previous works in
> progress and because I don't know well the new API yet, I am trying to
> review a diff of the latest state of my git repository compared to
> yours. I can tell my observations when they make sense. Then I propose
> in a second step, I can try to run the game and check the features.
> Thanks!

Thanks
 
> Overally, it seems pretty good. Here are a few observations:
> 
> 
>     bin/frozen-bubble 0f86ce221a71d95474648e2442cf3187989b390b
> 
> 
> -$sdl_flags = SDL_ANYFORMAT | SDL_HWSURFACE | SDL_DOUBLEBUF |
> SDL_HWACCEL | SDL_ASYNCBLIT;
> +$sdl_flags = SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_HWACCEL | SDL_ASYNCBLIT;
> +$sdl_flags = SDL_SWSURFACE;

Good Catch! I have changed this.
 
> redefining looks suspicious
> 
> 
> -    $mixer = eval { SDL::Mixer->new(-frequency => 44100, -channels =>
> 2, -size => 1024); };
> +    eval {
> +            SDL::Mixer::open_audio( 22050, AUDIO_S16SYS, 2,1024);
> +                };
> 
> (indentation and spaces suck) I used to use 44100 as frequency; I know
> that was something already used by debian but I am not sure what it
> really brings. normally, 22khz music is audibly less nice than 44khz.
> do you have some sort of reproduceable problems fixed by that change? 
> 
> -           $sound{$_}->volume(80);
> +           $sound{$_}->volume(100);
> 
> I think it was 80 to properly balance music and sound effects volumes.
> Is that change really needed? Apparently initial previous change and
> this one is:
> 
> commit b251d7479f36064496bd889c4b35c6af2e5e5eeb
> Author: Kartik Thakore <thakore.kar...@gmail.com>
> Date:   Fri Oct 2 19:10:32 2009 -0400
> 
>     Applied sound distort diff from here
> http://fb-win32.sourceforge.net/sound.diff
> 
> diff --git a/frozen-bubble b/frozen-bubble
> index 8aa7c04..fae9d5b 100755
> --- a/frozen-bubble
> +++ b/frozen-bubble
> @@ -299,7 +299,7 @@ sub play_music($) {
>  }
> 
>  sub init_sound() {
> -    $mixer = eval { SDL::Mixer->new(-frequency => 44100, -channels =>
> 2, -size => 1024); };
> +    $mixer = eval { SDL::Mixer->new(-frequency => 22050, -channels =>
> 2, -size => 1024); };
>      if ($@) {
>         $@ =~ s| at \S+ line.*\n||;
>         print STDERR "\nWarning: can't initialize sound (reason: $@).\n";
> @@ -311,7 +311,7 @@ sub init_sound() {
>         my $sound_path = "$FPATH/snd/$_.ogg";
>         $sound{$_} = SDL::Sound->new($sound_path);
>         if (UNIVERSAL::isa($sound{$_}, 'HASH') ? $sound{$_}{-data} :
> ${$sound{$_}}) {
> -           $sound{$_}->volume(80);
> +           $sound{$_}->volume(100);
>         } else {
>             print STDERR "Warning, could not create new sound from
> '$sound_path'.\n";
>         }
> 
> But I'm still wondering if it's really needed. Anyone witnessed sound
> distortion? Or is it happening only on Windows? Would that be a bug
> specific to the Windows platform in SDL or mikmod?
>
I will work on this with FROGGS. Btw we converted the one mikmod file to OGG.
The *.xm one. The header for that file was giving us a lot of trouble. 
> 
> -       $save = SDL::Surface->new(-width => $image->width, -height =>
> $image->height, -depth => 32, -Amask => "0 but true");  #- grrr...
> this piece of shit of Amask made the surfaces slightly modify along
> the print/erase of "Hurry" and "Pause".... took me so much time to
> debug and find that the problem came from a bug when Amask is set to
> 0xFF000000 (while it's -supposed- to be set to 0xFF000000 with 32-bit
> graphics!!)
> -       $background->blit($drect, $save, $rects{$image});
> +       $save = SDL::Surface->new( SDL_ANYFORMAT, $image->w,
> $image->h, 32, 0 , 0, 0, 0);  #- grrr... this piece of shit of Amask
> made the surfaces slightly modify along the print/erase of "Hurry" and
> "Pause".... took me so much time to debug and find that the problem
> came from a bug when Amask is set to 0xFF000000 (while it's -supposed-
> to be set to 0xFF000000 with 32-bit graphics!!)
> +       SDL::Video::blit_surface($background, $drect, $save, $rects{$image});
> 
> my comment is probably outdated since "0 but true" for Amask
> disappeared? (did you test long-running Hurry/Pause overlay graphics
> and didn't notice any slight visual modification over time?)
Yes. But I think we should have indiviual tests for this stuff. Maybe
when we refactor. 
> 
> -    if ($app->ticks - $$ticks > 1000) {
> -        fb_net::gsend('p');
> -        $$ticks = $app->ticks;
> +    if (SDL::get_ticks() - $ticks > 1000) {
> +        Games::FrozenBubble::Net::gsend('p');
> +        $ticks = SDL::get_ticks();
> 
> changing $$ticks by $ticks modifies behaviour, was that really intended?
Yes. I don't know why you had the '$$' but it doesn't work like that.
The $ticks is now just an integer.
> 
> 
> +       printf("print_: " . join(' ', (caller(1))) . " $text\n");
>
> a debug statement I guess
You guessed it. 
> 
> +       
> SDL::Video::wm_set_icon(SDL::Video::load_BMP("$FPATH/gfx/pinguins/window_icon_penguin.png"));
> 
> load_"BMP" for a PNG looks strange
Icons can only be set with BMP on windows. We need to change that. I
will make a note of it to use a .bmp file for windows. 
http://sdlperl.ath.cx/projects/SDLPerl/ticket/135

> 
>          #- now crop (and use native RGBA ordering)
> -        my $replace = SDL::Surface->new(-width =>
> $canon{data}{$number}[2], -height => $canon{data}{$number}[3], -depth
> => 32);
> -        $canon{img}{$number}->set_alpha(0, 0);
> -        $canon{img}{$number}->blit(SDL::Rect->new('-x' =>
> $canon{data}{$number}[0], '-y' => $canon{data}{$number}[1],
> -                                                  -width =>
> $canon{data}{$number}[2], -height => $canon{data}{$number}[3]),
> $replace, undef);
> +        my $replace = SDL::Surface->new( SDL_SWSURFACE,
> $canon{data}{$number}[2],  $canon{data}{$number}[3], 32, 0xFF000000,
> 0xFF0000, 0xFF00, 0xFF);
> 
> does this still use native RGBA ordering (I see 0xFF00000 etc
> specifications)? that may be slower on some architectures (ppc) if
> it's not native
It should. Again tests might help here.
> 
>      foreach my $cursortype (keys %{$imgbin{menu_cursor}}) {
>          foreach my $img (@{$imgbin{menu_cursor}{$cursortype}}) {
> -            my $alpha = SDL::Surface->new(-width => $img->width,
> -height => $img->height, -depth => 32);
> -            $img->set_alpha(0, 0);  #- for RGBA->RGBA blits,
> SDL_SRCALPHA must be removed or destination alpha is preserved
> -            $img->blit(undef, $alpha, undef);
> -            fb_c_stuff::alphaize(surf($alpha));
> -            push @{$imgbin{menu_cursor}{"${cursortype}alpha"}}, $alpha;
> -            $img->set_alpha(SDL_SRCALPHA(), 0);
> +            #my $alpha = SDL::Surface->new( SDL_ANYFORMAT,  $img->w,
> $img->h,  32, 0,0,0,0);
> +            #SDL::Video::set_alpha($img, 0, SDL_ALPHA_OPAQUE);  #-
> for RGBA->RGBA blits, SDL_SRCALPHA must be removed or destination
> alpha is preserved
> +            #SDL::Video::blit_surface($img,
> SDL::Rect->new(0,0,$img->w,$img->h), $alpha,
> SDL::Rect->new(0,0,$img->w,$img->h));
> +            #Games::FrozenBubble::CStuff::alphaize($alpha);
> +            push @{$imgbin{menu_cursor}{"${cursortype}alpha"}}, $img; 
> #$alpha;
> +            #SDL::Video::set_alpha($img, SDL_SRCALPHA, SDL_ALPHA_OPAQUE);
>          }
>      }
> 
> is that definitive? most of it is commented out.
Good catch I will change this. 
http://sdlperl.ath.cx/projects/SDLPerl/ticket/136
> 
>      #- the RGBA effects algorithms assume little endian RGBA surfaces
> -    my $replace = SDL::Surface->new(-width =>
> $imgbin{menu_logo}->width, -height => $imgbin{menu_logo}->height,
> -depth => 32);
> -    $imgbin{menu_logo}->set_alpha(0, 0);  #- for RGBA->RGBA blits,
> SDL_SRCALPHA must be removed or destination alpha is preserved
> -    $imgbin{menu_logo}->blit(undef, $replace, undef);
> -    $imgbin{menu_logo} = $replace;
> -    add_default_rect($replace);
> +    #my $replace = SDL::Surface->new( SDL_ANYFORMAT,
> $imgbin{menu_logo}->w,  $imgbin{menu_logo}->h, 32, 0, 0, 0, 0);
> +    #SDL::Video::set_alpha($imgbin{menu_logo}, 0, SDL_ALPHA_OPAQUE);
> #- for RGBA->RGBA blits, SDL_SRCALPHA must be removed or destination
> alpha is preserved
> +    #SDL::Video::blit_surface($imgbin{menu_logo},
> SDL::Rect->new(0,0,$imgbin{menu_logo}->w,$imgbin{menu_logo}->h),
> $replace, SDL::Rect->new(0,0,$imgbin{menu_logo}->w,$imgbin{menu_logo}->h));
> +    #$imgbin{menu_logo} = $imgbin{menu_logo}; #$replace;
> +    #add_default_rect($replace);
> 
> same
Added to ticket 136 
> 
> 
> -            my $tmp = SDL::Surface->new(-width =>
> $high_rect->width/4, -height => $high_rect->height/4,
> -                                        -depth => 32, -Amask => "0
> but true")->display_format;
> -            fb_c_stuff::shrink(surf($tmp),
> surf($background->display_format), 0, 0, rect($high_rect), 4);
> -            $tmp->blit(undef, $app, SDL::Rect->new(-x => $high_posx,
> '-y' => $high_posy));
> +           my $tmp =
> SDL::Video::display_format(SDL::Surface->new($high_rect->w/4,
> $high_rect->h/4, 32, 0, 0, 0, 0));
> +           #Games::FrozenBubble::CStuff::shrink($tmp,
> SDL::Video::display_format($background), 0, 0, $high_rect, 4);
> +            SDL::Video::blit_surface($tmp,
> SDL::Rect->new(0,0,$tmp->w,$tmp->h), $app, SDL::Rect->new($high_posx,
> $high_posy, $tmp->w, $tmp->h));
> 
> same - with shrinking disabled the highscores are probably broken?
No the highscores should work. Wait what branch are you on? Redesign?
This was changed later.
> 
> 
> -       if ($i) {
> -           print_('menu', $app, $MENUPOS{xpos_panel}, $ypos, $i,
> $imgbin{void_panel}->width, 'center');
> -       }
> -       $ypos += $lineheight;
> +               print_('menu', $app, $MENUPOS{xpos_panel}, $ypos, $i,
> $imgbin{void_panel}->w, 'center') if $i;
> +               $ypos += $lineheight;
> 
> I think it's better to stick with the old code style (even if it's
> probably not perfect) than mixing different code styles; in
> particular, I avoid veeeeeeeryyyyyyyy looooongggggg statements
> following by a very short conditional (if $i) because it's easy to
> miss the conditional. So please I think it's not good to make such
> modifications.

Good point. We should change this in the refactor or before.

> 
> 
> -       my $synchro_ticks = $app->ticks;
> -        if ($graphics_level > 1) {
> -            $draw_overlook->();
> -            $app->update(@update_rects);
> -            @update_rects = ();
> -        }
> -        $event->pump;
> -        while ($event->poll != 0) {
> +               my $synchro_ticks = SDL::get_ticks();
> +# commented out because otherwise we see only a white box instead of
> highlighted background image
> +#        if ($graphics_level > 1) {
> +#            $draw_overlook->();
> +#            SDL::Video::update_rects($app, @update_rects);
> +#            @update_rects = ();
> +#        }
> +        SDL::Events::pump_events();
> +        while (SDL::Events::poll_event($event) != 0) {
> 
> where do we stand, about that one? any fix along the way?
I don't understand the breakage here. Do we need this? I think this was
FROGGS fix.
> 
> -            if ($smg_status_messages[-$i] =~ /^<U+202B>/) {
> +            if ($smg_status_messages[-$i] =~ /^?/) {
>                  #- if text begins with unicode RTL direction, we also
> need to tell pango to align on the right
> 
> why was that changed? the "strange" character was here on purpose.
> have you tested in e.g. farsi?
No I didn't test farsi. Again FROGGS knows more about this.
> 
> http://www.fileformat.info/info/unicode/char/202B/index.htm
> 
> seems that change originates from:
> 
> commit cf36fb9b66c568c542445a813783488695afff13
> Author: Kartik Thakore <thakore.kar...@gmail.com>
> Date:   Thu Apr 1 21:17:27 2010 +0000
...
> 
> $$back -> $back behavorial change?
 Yup no more crazy referal things. 
> 
> I need to stop now; I'll try to review the other half soon!
> 
> 
> PS: Anyone tested the joysticks?
No don't have one. Please test it? 
> PS: can you add the already discussed warning about not being an
> official release, or something else with the same intent, on CPAN?
> search still produces
> http://search.cpan.org/~kthakore/Games-FrozenBubble-2.201/lib/Games/FrozenBubble.pm
> which seems unmodified so far

I have update the Games::FrozenBubble to 2.202 as you said. 

P.S.

Please join us on #sdl irc.perl.org it makes this much eaiser.

> 
> -- 
> Guillaume Cottenceau - http://zarb.org/~gc/

Peace,
Kartik

Reply via email to